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.

这将创建一个指向a的指针TriangleStrip

TriangleStrip* s;

这期望将指针分配给TriangleStrip. 但这从未发生过。

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