我一直在头文件中做前向声明,并在cpp中包含实际的类文件。但是当模拟类时我会遇到问题:
class MyClass {
public:
MyClass();
void aFunction();
private:
QList<int> m_member;
};
要构建它,我需要提供有关QList
的课程信息。我试过了:
class QList;
error: template argument required for 'class QList'
我尝试过(因为在这个特定的类中我只需要QList
个整数):
class QList<int>;
error: specialization of 'QList<int>' after instantiation
我查找了这些错误,但发现只有人们在创建类模板时遇到问题,没有发现前向声明。
如果没有其他工作,我可以在头文件中#include <QList>
并放弃前瞻性声明 - 但我想了解这个问题。
有关template classes forward declarations的最热门问题也建议使用此选项:
只需
#include <list>
,不要担心。
我不明白other answers ...
答案 0 :(得分:1)
您可以转发声明模板化的类,如下所示:
template<typename>
class QList;
但如果你声明一个不是引用或指针的类型(即m_member)的成员,它就不会工作。