我的程序崩溃了:
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写给我三角形,但我不能把它放到矢量上。
有什么问题?
答案 0 :(得分:3)
TriangleStrip* s;
声明未初始化的指针,取消引用它s->addTriangle...
是非法的。
用new
初始化它,或者根本不使用指针 - 在这种情况下你不需要指针,只需要
TriangleStrip s;
和
s.addTriangle(triangles[i]);
答案 1 :(得分:0)
您永远不会创建TriangleStrip
。
这会为TriangleStrip
创建一个指针。
TriangleStrip* s;
这需要将指针分配给TriangleStrip
。但这从未发生过。
s->addTriangle(triangles[i]);