С++ вектор 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 напишите мне треугольник, но я не могу поместить его в вектор.

В чем проблема?


person user2157405    schedule 11.03.2013    source источник
comment
Где инициализируется TriangleStrip* s;?   -  person kay    schedule 11.03.2013


Ответы (2)


TriangleStrip* s; объявляет неинициализированный указатель, и его разыменование s->addTriangle... недопустимо.

Либо инициализируйте его с помощью new, либо вообще не используйте указатели - в этом случае вам не нужны указатели, просто

TriangleStrip s;

а также

s.addTriangle(triangles[i]); 
person Luchian Grigore    schedule 11.03.2013

Вы никогда не создаете TriangleStrip.

Это создает указатель на TriangleStrip.

TriangleStrip* s;

И это предполагает, что указатель будет назначен на TriangleStrip. Но этого не произошло.

s->addTriangle(triangles[i]); 
person Drew Dormann    schedule 11.03.2013