私はcppを初めて使い、リストについて知りたいです。 プログラムを実行するとコンパイルは正常ですが、結果が得られません 私は期待しています。std :: list、オブジェクトにアクセスできない
これは私に出力
Legs: 0 Name:
を与えることは
Legs 4 Name: dog
いずれかが問題を見ることができすべきですか?
コメント欄にあるように、私は1時間以上かけて試してみましたが、これをうまく動作させるには問題は見えません。
ヘッダファイル
using namespace std;
#ifndef ANIMAL_H
#define ANIMAL_H
class Animal {
public:
Animal();
Animal(const Animal& orig);
virtual ~Animal();
int _Legs;
void SetName(string name);
string GetName();
private:
string _Name;
};
#endif /* ANIMAL_H */
Animal.cpp
Animal::Animal() {
}
Animal::Animal(const Animal& orig) {
}
Animal::~Animal() {
}
string Animal::GetName(){return _Name;}
void Animal::SetName(string name){_Name = name;};
あなたは何もありません理由は、あなたのコピーコンストラクタです
void List()
{
std::list<Animal> animal_list;
Animal temp;
temp = Animal();
temp._Legs = 4;
temp.SetName("Dog");
animal_list.push_back(temp);
for(std::list<Animal>::iterator list_iter = animal_list.begin();
list_iter != animal_list.end(); list_iter++)
{
std::cout<< "Legs:" << list_iter->_Legs << " Name: " << list_iter->GetName() << endl;
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
List();
return 0;
}
おそらくあなたはそのコピーコンストラクタを実装する必要がありますか?つまり、実際に何かをしたり、完全に取り除いたりします。 –
'Animal'の空のコピーコンストラクタがありますか?実際に何を期待していますか?いずれかを定義しないでコンパイラが生成したものを使用するか、定義内のクラスメンバー変数をコピーします。 –
また、(あなたの問題とは関係ありませんが)名前の先頭にアンダースコアを付け、その後に大文字を付けるべきです。 [それらはすべてのスコープで予約されている](http://stackoverflow.com/a/228797/440558)。 –