(sdk) class 包含模板的前向声明
Forward declaration of (sdk) class containing template
我一直在头文件中进行前向声明,并在 cpp 中包含实际的 class 文件。但是当 classes 被模板化时,我 运行 遇到了问题:
class MyClass {
public:
MyClass();
void aFunction();
private:
QList<int> m_member;
};
为了构建它,我需要提供 class 关于 QList
的信息。我试过了:
class QList;
error: template argument required for 'class QList'
我试过了(因为在这个 class 中我只需要 QList
个整数):
class QList<int>;
error: specialization of 'QList<int>' after instantiation
我查找了这些错误,但只发现人们在创建 class 模板时遇到问题,没有发现任何关于前向声明的问题。
如果没有别的办法,我可以 #include <QList>
在头文件中放弃前向声明 - 但我想了解这个问题。
关于 template classes forward declarations 的最热门问题中也建议使用此选项:
Just #include <list>
and don't worry about it.
我不明白other answers...
你可以转发声明一个模板化的 class,像这样:
template<typename>
class QList;
但是如果你声明一个不是引用或指针的这种类型的成员(即 m_member),它将不起作用。
我一直在头文件中进行前向声明,并在 cpp 中包含实际的 class 文件。但是当 classes 被模板化时,我 运行 遇到了问题:
class MyClass {
public:
MyClass();
void aFunction();
private:
QList<int> m_member;
};
为了构建它,我需要提供 class 关于 QList
的信息。我试过了:
class QList;
error: template argument required for 'class QList'
我试过了(因为在这个 class 中我只需要 QList
个整数):
class QList<int>;
error: specialization of 'QList<int>' after instantiation
我查找了这些错误,但只发现人们在创建 class 模板时遇到问题,没有发现任何关于前向声明的问题。
如果没有别的办法,我可以 #include <QList>
在头文件中放弃前向声明 - 但我想了解这个问题。
关于 template classes forward declarations 的最热门问题中也建议使用此选项:
Just
#include <list>
and don't worry about it.
我不明白other answers...
你可以转发声明一个模板化的 class,像这样:
template<typename>
class QList;
但是如果你声明一个不是引用或指针的这种类型的成员(即 m_member),它将不起作用。