c ++ vector push_back无效

时间:2013-03-11 15:38:34

标签: c++ stdvector push-back

我的程序崩溃了:

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写给我三角形,但我不能把它放到矢量上。

有什么问题?

2 个答案:

答案 0 :(得分:3)

TriangleStrip* s;声明未初始化的指针,取消引用它s->addTriangle...是非法的。

new初始化它,或者根本不使用指针 - 在这种情况下你不需要指针,只需要

TriangleStrip s;

s.addTriangle(triangles[i]); 

答案 1 :(得分:0)

您永远不会创建TriangleStrip

这会为TriangleStrip创建一个指针

TriangleStrip* s;

这需要将指针分配给TriangleStrip。但这从未发生过。

s->addTriangle(triangles[i]);