仅仅声明一个全局类,报错does not name a type,代码如下: #ifndef QGLOBAL_H #define QGLOBAL_H class CGlobalInstance { public: CGlobalInstance() {} ~CGlobalInstance() {} } #endif // QGLOBAL_H 能查到的大部分问题原因,都是头文件的交叉引用,变量作用域引起,但是都不是上面代码问题产生的原因。 将全局类继承QObject,即可编译通过。修改如下: #ifndef CGlobal_H #define CGlobal_H #include<QObject> class CGlobalInstance : public QObject { Q_OBJECT public: CGlobalInstance(){}; ~CGlobalInstance(){}; }; #endif // CGlobal_H
猜测问题可能是QTCreator中类必须为QT的类型?未修改的代码在VS2017中是可以编译通过的