2013-03-11 2 views
0

Моя программа вылетает здесь:C++ вектор 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]); 
} 

соиЬ написать мне треугольник, но я не может поместить это в вектор.

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

+0

Где находится 'TriangleStrip * s;' initialized? – kay

ответ

3

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

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

TriangleStrip s; 

и

s.addTriangle(triangles[i]); 
+0

Я вижу, спасибо! Указатель для меня трудно: / – user2157405

0

Вы не когда-либо создайте TriangleStrip.

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

TriangleStrip* s; 

И это ожидает указатель будет присвоен TriangleStrip. Но этого никогда не было.

s->addTriangle(triangles[i]); 
Смежные вопросы