#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); この辺が、ちょっと冗長かな?と思っていた次第です。 ありがとうございました。