我在项目中使用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
个文件都位于源树中,否则项目将不会链接。
有人知道,为什么编译器会产生错误?你知道有解决方案/解决方案吗?
编辑:根据要求提供相应的代码文件:
答案 0 :(得分:4)
可能是你的
ObjectControllerPrivate *d_ptr;
与
冲突 QScopedPointer<QObjectData> d_ptr;
继承自QWidget / QObject d_ptr 成员变量。
重命名并重试。