传递变量时的访问冲突
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
的任何数据成员。
相关文章:
- 写入位置0x0000000C时发生访问冲突
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- C++尝试深度复制唯一指针时出现内存访问冲突
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 尝试通过共享指针使用变量时读取访问冲突
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 尝试使用成员函数访问动态分配的成员变量时读取访问冲突
- 写入结构变量时发生strcpy访问冲突
- C++-引发异常:读取访问冲突.变量为nullptr
- 当函数在fread()应用于局部结构变量后返回时发生访问冲突
- 声明变量时发生访问冲突
- 传递变量时的访问冲突
- 可以净化找出栈变量上的访问冲突
- 赋值变量时c++未处理异常访问冲突
- 使用 int 变量的 C++ 异常访问冲突
- 未处理的异常/访问冲突,只要我在变量上使用 OutputDebugStringW()
- 尝试返回同一类中的私有变量时C++ "Getter"方法抛出访问冲突