VC ++中的类型转换是错误的

时间:2016-08-10 11:00:34

标签: visual-c++ casting dynamic-cast reinterpret-cast static-cast

我有一个类_PDevice,它在PDevice.cpp中实现并在PDevice.h中声明

另外,在PDevice.h中,我添加了:

typedef QSharedPointer<_PDevice>    DDevice;

现在,还有另一个继承_PDevice

的类QLDevice

QLDevice也有一名公众成员:

QFile*      m_file;

在另一个文件Control.h中,我声明了:

DDevice m_device;

在Control.cpp文件中,我添加了一个方法:

m_device = DDevice(new QLDevice(filePath)); 

这在QLDevice构造函数中设置m_file:

m_file = &filePath;

在此之后,当我尝试调用m_file-&gt; close()时,它会在QXDM.exe中的0x740DCB49处抛出错误&#34; 未处理的异常:0xC0000005:访问冲突执行位置0x00000000 &# 34;

像这样:

if (m_file == NULL)
        m_lastError = FCLOSE_NULL_ERR;
else
        m_file->close();

我不明白我在哪里弄错了。

一切顺利,直到我调用m_file-&gt; close()

请有人帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

scala> val foo : PartialFunction[AnyRef, Unit] = {
     | case arg => println(s"arg = $arg")
     | }
foo: PartialFunction[AnyRef,Unit] = <function1>

scala> foo()
<console>:13: error: not enough arguments for method apply: (v1: AnyRef)Unit in trait Function1.
Unspecified value parameter v1.
       foo()

此成员未初始化,因此您应该检查它的创建位置以及调用适当的初始化方法。