将moc_objectcontroller.cpp添加到Visual Studio源代码树时,QtPropertyBrowser编译器错误

时间:2014-02-18 14:46:58

标签: visual-studio qt properties

我在项目中使用QtPropertyBrowser,基于ObjectController示例。我使用Visual Studio 2010作为IDE和Qt的5.2.1版本(我可以重现Qt 4.7和4.8的错误)。

所有moc_*.cpp个文件都会添加到源树GeneratedFiles\$(Configuration)。不幸的是,这会导致以下编译器错误:

    2>  moc_objectcontroller.cpp
    2>  GeneratedFiles\Release\moc_objectcontroller.cpp(70): error C2027: use of undefined type 'ObjectControllerPrivate'
    2>  c:\***\guimain\generatedfiles\release\../../src/objectcontroller.h(45) : see declaration of 'ObjectControllerPrivate'
    2>  GeneratedFiles\Release\moc_objectcontroller.cpp(70): error C2227: left of '->slotValueChanged' must point to class/struct/union/generic type

当我从源代码树中删除moc_objectcontroller.cpp时(实际上没有删除磁盘上的文件),项目构建并运行正常。所有其他moc_*.cpp个文件位于源树中,否则项目将不会链接。

有人知道,为什么编译器会产生错误?你知道有解决方案/解决方案吗?

编辑:根据要求提供相应的代码文件:

1 个答案:

答案 0 :(得分:4)

可能是你的

 ObjectControllerPrivate *d_ptr;

冲突
 QScopedPointer<QObjectData> d_ptr;

继承自QWidget / QObject d_ptr 成员变量。

重命名并重试。