工厂方法中的访问冲突
Access violation in factory method
[编辑]错误在其他地方,因为@litelite帮助我找到了,不需要更多答案
我的工厂类中有名为MakeDevice
的工厂方法,它返回指向基类对象的指针(但实际上指向其中一个子类的对象,具体取决于条件(。
执行程序时,我收到 xC0000005:访问冲突错误。Visual Studio 调试器停止的行如下所示:
ret = new DeviceA;
法典: 基类是 BaseDevice,两个子类是 DeviceA 和 DeviceB。DeviceModel 是一种枚举类型,以使其更容易。
BaseDevice *DeviceFactory::MakeDevice(DeviceModel model) {
BaseClass *ret;
switch(model) {
case model_deviceA:
ret = new DeviceA; // debugger stops here
break;
case model_deviceB:
ret = new DeviceB;
break;
default:
printf("error");
break;
}
return ret;
}
有没有人经历过类似的事情? 我读到这是实现这种工厂的正确方法。我也对设计更改持开放态度,只要我可以以相同的方式抽象地使用基类上的方法。
您还应该使用 nullptr 初始化 ret。
相关文章:
- 写入位置0x0000000C时发生访问冲突
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- C++尝试深度复制唯一指针时出现内存访问冲突
- 跨 DLL 边界访问虚拟方法是否安全/可能?
- 初始化指向类实例的智能指针并访问其方法
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 写入访问冲突异常
- 在类 12.exe 中0x7B37FF80 (ucrtbased.dll) 引发异常: 0xC0000005:访问冲突读
- 0xC0000005:访问冲突写入位置0xCDCDCDCD动态分配错误
- 工厂方法中的访问冲突
- Box2d C++访问冲突使用b2fixture超出方法
- 调用基类的方法时发生访问冲突
- 如何解决调用 dll 方法时的访问冲突写入位置
- 在鼠标钩子代码中调用方法会导致访问冲突
- 访问dll方法时的访问冲突读取位置
- 访问冲突直接x更新方法
- 尝试返回同一类中的私有变量时C++ "Getter"方法抛出访问冲突