- ベストアンサー
メンバ関数の引数としてオブジェクトの配列をとれる?
- VC++6.0 on W2Kを使っている初心者です。メンバ関数の引数にオブジェクトの配列を指定する方法を教えてください。
- プログラムは、数字を入力して猫のオブジェクトを作成し、それぞれに番号を付けます。猫の名前を聞くと、その猫の名前を教えてくれます。そして、別のクラスのオブジェクトが、選択した猫がおいしいと言います。
- プログラムのコードは上記にあります。オブジェクトの配列を引数にとるメンバ関数のエラーを修正する方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
#include <iostream> #include <string> using namespace std; class Neko { int name; public: Neko(){} Neko( int n ):name( n ){} void setname( int n ){ name = n; } int getname() const { return name; } // *** const オブジェクトにしました。 void naku() const; // *** 見たところ引数は必要ない }; // const オブジェクトに対して非 const オブジェクトを getname を呼び出すと // ウチの環境で警告が出ました。 void Neko::naku() const { cout << "My name is " << getname() << "th cat." << endl; // ・・・* } class Inu { public: Inu(){} void naku( int i ) const; }; void Inu::naku( int i ) const { cout << i << "th cat is tasty." << endl; } int main(){ int i; int num; int temp; Neko *x; Inu y; cout << "How many cats do you create ?" << endl; cin >> num; x = new Neko[ num ]; for( i = 0; i < num; i++ ){ x[i].setname(i); } cout << "何匹目を鳴かせますか?" << endl; cin >> temp; x[ temp ].naku(); y.naku( temp ); }
お礼
たびたびの投稿、お手数おかけします。 やっぱりこの方法しかないですよね・・・ 実は質問を出した後、思いついたのがこのやり方だったのですが、 x[i].setname(i); この辺が、ちょっと冗長かな?と思っていた次第です。 ありがとうございました。