私のクラスの始まりは次のとおりです。
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 が開始されているかどうかをチェックしません。それが、セグメンテーション違反が発生し続ける理由だと思います。