我的课开始是:
class Player{
private:
Cardpile hand;
...
}
Cardpile 是另一个类。如果我这样做Player *p=new Player();
手会自动初始化吗?我问这个是因为我一直在试图找出分段错误。我在我的代码中到处查看。我能想到的最后一件事hand
是没有初始化。
编辑:这是我得到的分段错误。Card 是 Cardpile 内部的一个类。我知道 Card 和 Cardpile 都有效。
Program received signal SIGSEGV, Segmentation fault.
0x0000000000402ac0 in __gnu_cxx::new_allocator<Card*>::construct (this=0x6070a8, __p=0x4015c6, __val=@0x7fffffffe6d8) at /usr/include/c++/4.4/ext/new_allocator.h:105
105 { ::new((void *)__p) _Tp(__val); }
编辑: Cardpile 类:
class Cardpile : private vector<Card*> {
public:
using vector<Card*>::size;
using vector<Card*>::at;
Cardpile ();
...
}
Cardpile::Cardpile(){}
编辑:这是一个很酷的事实: p==NULL 不检查 p 是否已启动。我想这就是我不断收到分段错误的原因。