包含模板的(sdk)类的前向声明

时间:2015-08-17 15:27:27

标签: c++ templates forward-declaration

我一直在头文件中做前向声明,并在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 ...

1 个答案:

答案 0 :(得分:1)

您可以转发声明模板化的类,如下所示:

template<typename>
class QList;

但如果你声明一个不是引用或指针的类型(即m_member)的成员,它就不会工作。