我面临非法访问错误,但我不确定我的代码中发生了什么......
我有这样的课:
class MyClass
{
cHapticDeviceHandler* handler;
public:
MyClass(void){handler = new cHapticDeviceHandler();}
~MyClass(void){delete handler;}
cHapticDeviceHandler* getHandler() {return handler;}
};
如果我创建这样的函数,我的代码就可以工作。我可以创建一个新对象并使用该 getHandler() 方法来毫无问题地使用 cHapticDeviceHandler*。
function A(){
MyClass* obj1 = new MyClass();
...
}
但是,如果我尝试做这样的事情......
function B(){
MyClass* obj1 = new MyClass();
MyClass* obj2 = new MyClass();
}
第一个 obj1 的创建没有问题,但第二个在执行构造函数时因非法访问错误而崩溃。
如果我没记错的话,当你从一个类创建新对象时,它们的属性是不同的,所以每个对象都有自己的属性。考虑到这一点,我认为这些 cHapticDeviceHandler 指针在两个对象中是不同的,所以我不明白为什么首先做一个新的工作,然后再做一次就行不通了。
我很确定我做错了什么并且令人尴尬的buuuut ...我找不到问题出在哪里:$
任何人都可以给我一个提示吗?我被迫使用 Visual Studio 2008,而我正在使用 CHAI3D,以防万一这很重要。