0

私のプログラムはここでクラッシュします:

void TriangleStrip::addTriangle(Triangle t){ 
   cout << t <<endl ;
   instances.push_back(t); // problem here
}

インスタンスは次のとおりです。

vector<Triangle> instances;

ここで addTriangle を呼び出します。

TriangleStrip* s;
int c = m.getTrianglesCount();
int i;
Triangle* triangles = m.getTriangles();
for(i=0; i<c; i++){
  s->addTriangle(triangles[i]); 
}   

cout は三角形を書いてくれますが、これをベクトルに入れることはできません。

何が問題ですか?

4

2 に答える 2

3

TriangleStrip* s;初期化されていないポインターを宣言し、それを逆参照することs->addTriangle...は違法です。

で初期化するかnew、ポインターをまったく使用しないでください。この場合、ポインターは必要ありません。

TriangleStrip s;

s.addTriangle(triangles[i]); 
于 2013-03-11T15:40:16.067 に答える
0

を作成することはありませんTriangleStrip

これにより、へのポインターTriangleStripが作成されます。

TriangleStrip* s;

そして、これはポインタがに割り当てられることを期待していますTriangleStrip。しかし、それは決して起こりませんでした。

s->addTriangle(triangles[i]); 
于 2013-03-11T15:41:21.533 に答える