質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

3回答

16008閲覧

C++ エラーがたくさんでて困っています。。デバッグを助けてください。。

heihoo

総合スコア56

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2015/03/16 15:34

以下のコードを書いたのですが思い通りに動きません。。

デバッグを教えてほしいです。。

#include <iostream>
#include <string.h>

using namespace std;

class Person {
public:
Person();
Person::Person(const char *str);
Person::Person(const char str, int yy, const char pn);
Person(const Person &psn);
~Person() {
if (name != NULL) delete [] name; //メモリ解放
}

void init(const char *str, int yy,const char* pn); void SetName(const char *str); void SetAge(const int yy) { age = yy; } void SetPhonum(const char *pn) {strcpy(phonenum, pn);} const char *GetName() {return name;} int GetAge() {return age;} const char *GetPhoneNum() {return phonenum; }

private:
char *name;
int age;
char phonenum[15];
};

void Person::init(const char str, int yy, const char pn) {
name = new char[strlen(str) + 1];
strcpy(name, str);
age = yy;
strcpy(phonenum, pn);
}

Person::Person() {
name = NULL;
age = 0;
phonenum[0] = '¥0';
}

Person::Person(const char *str) {
init(str, 0, "");
}
Person::Person(const char str, int yy, const char pn) {
init(str, yy, pn);
}

Person::Person(const Person &psn) {
init(psn.name, psn.age, psn.phonenum);
}

void Person::SetNum(const char *str) {
if (name != NULL) delete [] name;
name = new char[strlen(str) + 1];
strcpy(name, str);
}

int main(int argc, const char * argv[])
{
Person Per("一太郎");
Per.SetAge(20);
Per.SetPhoneNum("012-1111-1111");

Person Per2("二太郎", 25, "012-1212-2222"); Person.Per3(Per2); Per3.SetName("三太郎"); Per3.SetAge(30); Person *p[] = { &Per, &Per2, &Per3 }; for (int i=0; i < 3; i++) { cout << "名前:" << p[i]->GetName() << "年齢:" << p[i]->GetAge() << "電話番号:" << p[i]->GetPhoneNum() << endl; } return 0;

}

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2016/01/23 10:50

「思い通りに動きません」の詳細を教えてください。
guest

回答3

0

修正点の解説

修正内容

  1. extra qualification ‘Person::’
    「extra qualification」とは、余分な形容 なので 以下の修正

修正前 Person::Person(const char *str);
修正後 Person(const char *str);

  1. error: extra qualification ‘Person::’
    1と同じ

修正前 Person::Person(const char str, int yy, const char pn);
修正後 Person(const char str, int yy, const char pn);

  1. error: no ‘void Person::SetNum(const char*)’ member function declared in class ‘Person’
    SetNumメンバーが宣言されていない

修正前 void Person::SetNum(const char *str) {
修正後 void Person::SetName(const char *str) {

  1. error: ‘class Person’ has no member named ‘SetPhoneNum’
    SetPhoneNumメンバがクラスPersonに存在しない。

修正前 void SetPhonum(const char *pn) {strcpy(phonenum, pn);}
修正後 void SetPhoneNum(const char *pn) {strcpy(phonenum, pn);}

  1. error: expected unqualified-id before ‘.’ token
    Person.Per3(Per2);

修正前
修正後 Person(const Person &psn);

Person::Person(const Person &psn) {
init(psn.name, psn.age, psn.phonenum);
}

参考文献
http://yshibata.blog.so-net.ne.jp/2007-10-18

投稿2016/03/03 02:14

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

下記にコードを記載してあります。自身の記述したコードと見比べてください。また、あくまでタイプミスなどを修正したものであり、動作を保障するものではありません。
xcodeは使用したことがありませんが、統合開発環境ならエラーの詳細とエラーが出ている行番号が記述されているかと思います。まずは1行ずつエラーを取り除くことからデバッグは始まります。
デバッグはプログラムの基本です。まずは御自身で一通り確認していただき、その上で困難な場合等に質問されるのがよいかと思います。
厳しい意見かと思われるかもしれませんが、それが面倒などならあまり向いていないかと思われます。

lang

1#include <iostream> 2#include <string.h> 3 4using namespace std; 5 6class Person { 7public: 8 Person(); 9 Person::Person(const char *str); 10 Person::Person(const char *str, int yy, const char* pn); 11 Person(const Person &psn); 12 ~Person() { 13 if (name != NULL) delete [] name; //メモリ解放 14 } 15 16 void Init(const char *str, int yy,const char* pn); 17 void SetName(const char *str); 18 void SetAge(const int yy) { age = yy; } 19 void SetPhonNum(const char *pn) {strcpy(phonenum, pn);} 20 const char *GetName() {return name;} 21 int GetAge() {return age;} 22 const char *GetPhoneNum() {return phonenum; } 23private: 24 char *name; 25 int age; 26 char phonenum[15]; 27}; 28 29void Person::Init(const char *str, int yy, const char* pn) { 30 name = new char[strlen(str) + 1]; 31 strcpy(name, str); 32 age = yy; 33 strcpy(phonenum, pn); 34} 35 36Person::Person() { 37 name = NULL; 38 age = 0; 39 phonenum[0] = '\0'; 40} 41 42Person::Person(const char *str) { 43 Init(str, 0, ""); 44} 45Person::Person(const char *str, int yy, const char* pn) { 46 Init(str, yy, pn); 47} 48 49Person::Person(const Person &psn) { 50 Init(psn.name, psn.age, psn.phonenum); 51} 52 53void Person::SetName(const char *str) { 54 if (name != NULL) delete [] name; 55 name = new char[strlen(str) + 1]; 56 strcpy(name, str); 57} 58 59int main(int argc, const char * argv[]) 60{ 61 Person per("一太郎"); 62 per.SetAge(20); 63 per.SetPhonNum("012-1111-1111"); 64 65 Person per2("二太郎", 25, "012-1212-2222"); 66 67 Person per3(per2); 68 per3.SetName("三太郎"); 69 per3.SetAge(30); 70 71 Person *p[] = { &per, &per2, &per3 }; 72 73 for (int i=0; i < 3; i++) { 74 cout << "名前:" << p[i]->GetName() << "年齢:" << p[i]->GetAge() << "電話番号:" << p[i]->GetPhoneNum() << endl; 75 } 76 return 0; 77}

投稿2015/03/17 02:32

yuu.s

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

思い通りに動かないって、このコードってコンパイル通らないですよね。。。
コンパイルエラーの内容を上から順番につぶしていけばコンパイルが通って動くようになるはずです。

ざっと見て3箇所おかしいところを見つけました。
(1)SetNumメソッドって何?
(2)単純な大文字と小文字のタイプミス
(3)main()関数内のスペースとピリオドの打ち間違え

投稿2015/03/16 16:53

TaroToyotomi

総合スコア1430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問