我有一個類中的方法獲取指向另一個對象(不同類)的指針,並將一個對象(另一個不同的類)添加到作爲第一個對象(作爲參數傳遞的對象)的成員變量的向量。這是代碼:嘗試訪問指向矢量中某個對象的指針時發生無效訪問錯誤
ObstacleManager::ObstacleManager(Application *lApp)
{
app=lApp;
GLfloat obstacleVerts[12]={
-0.1f,-0.2f,0.0f,
0.1f,-0.2f,0.0f,
-0.1f,0.2f,0.0f,
0.1f,0.2f,0.0f
};
StandardObstacle obstacle(obstacleVerts,-0.7f,0.0f,4);
obstacle.manager=this;
lApp->characters.push_back(&obstacle);
}
我認爲問題是出障礙物對象被釋放時,它不應該,因爲如果我改變代碼,並用「新」(如果你創建了一個對象創建障礙新的,你必須手動刪除它,不是嗎?)它的工作原理。像這樣:
ObstacleManager::ObstacleManager(Application *lApp)
{
app=lApp;
GLfloat obstacleVerts[12]={
-0.1f,-0.2f,0.0f,
0.1f,-0.2f,0.0f,
-0.1f,0.2f,0.0f,
0.1f,0.2f,0.0f
};
StandardObstacle *obstacle=new StandardObstacle(obstacleVerts,-0.7f,0.0f,4);
obstacle->manager=this;
lApp->characters.push_back(obstacle);
}
有沒有辦法來防止這種情況發生?
'lApp-> characters.push_back(obstacle);'+改變容器的T,但你真的應該學習指針,內存管理.. – 2012-03-21 19:42:19
+更改容器是什麼意思? – XaitormanX 2012-03-21 19:54:37