用C++写命令模式时候遇到的,emmm…是在下愚鲁了啊!
首先,C++创建对象,可以在堆中分配,也可以在栈中分配。
#include <iostream>
using namespace std;
class A
{
private:
int n;
public:
A(int m):n(m)
{ }
~A(){}
};
int main()
{
A a(1); //栈中分配
A b = A(1); //栈中分配
A* c = new A(1); //堆中分配
delete c;
return 0;
}
我的代码:
Command *command = parseOrder(order);
command->execute(order);
然后呢,用栈创建对象(parseOrder返回)时会报这个错误。
引发了异常: 读取访问权限冲突。command-> 是 0xCCCCCCCC。
改成在堆中分配(也就是用new分配)就解决了。
附上参考到的两个博文链接: