[英]C++ Access violation when passing variable
這是我的問題,如果我通過函數將變量從A類傳遞到B類,然后在B類中將該變量傳遞給其他函數進行測試,則它可以正常工作。 但是,如果我將變量從A傳遞到B,然后嘗試將其分配給類B中的變量,它將無故給出錯誤
//Globals.h
enum TypeofObject { CIRCLE, SQUARE, RECTANGLE, DIAMOND };
//Object.h
#include "Globals.h"
class Object
{
void Update();
private:
TypeofObject currentObject;
CollisionDetection * gameCollision;
};
//Object.cpp
void Object::Update()
{
//Do stuff here
gameCollision -> testCollision(currentObject);
}
//CollisionDetection.h
#include "Globals.h"
class CollisionDetection
{
public:
void testCollision(TypeofObject currentObject);
private:
void checkObjects(TypeofObject currentObject);
TypeofObject currentObject;
}
//CollisionDetection.cpp
void CollisionDetection::testCollision(TypeofObject curObject)
{
currentObject = curObject; //<- If I have this then it gives access violation error
checkObjects(curObject); //<- Passing it from one function to the next works
//fine but I want to assign it to currentObject so
//it doesnt need to be passed
}
我認為這里的問題是Object::gameCollision
還沒有初始化。 正確調用CollisionDetection::testCollision
函數是因為您可以將成員函數想象為帶有額外隱藏參數的常規函數:
void CollisionDetection_testCollision(CollisionDetection *this,
TypeOfObject curObject);
鑒於你的定義,功能,運行正常,直到點在哪里this
是訪問:
currentObject = curObject; // this->currentObject = curObject
上面的行試圖將一些內存設置this
對象的偏移量。 如果this
是不正確初始化,該函數將失敗,並訪問沖突。
我認為checkObjects(curObject)
不會失敗,因為您沒有在該函數中訪問CollisionDetection
任何數據成員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.