(sdk)类包含模板的前向声明
Forward declaration of (sdk) class containing template
我一直在头文件中做前向声明,并在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>
并放弃前向声明-但我想了解这个问题。
这个选项在关于模板类前向声明的最常见的问题中也有建议:
只要
#include <list>
,别担心。
你可以向前声明一个模板化的类,像这样:
template<typename>
class QList;
但是如果你用这个类型声明一个成员(即m_member),它不是一个引用或指针,它将不起作用
相关文章:
- 包含的类类型显然没有声明,为什么?
- 如果 x.h 仅由函数声明组成,为什么有必要在 x 中包含 x.h.cpp
- C++(和 ROS) - 包含与前向声明引用,设置默认值和类型定义
- 我包含了<winuser.h>,但编译器在MonitorFromWindow上抛出"未声明"
- 即使不包含其标头,如何成功向前声明的类编译?
- 关于静态常量数据模因的声明和定义的混淆
- 包含文件中的 Typdef "未在此范围内声明"
- 程序只适用于包含(无副作用)cout声明
- 循环包含依赖项/转发声明
- 我收到未声明的标识符错误,但我已包含头文件?
- 如何声明包含整数数组的对象
- 我需要在不使用前向声明的情况下相互包含两个头文件,导致"incomplete type"错误
- 我需要声明一个包含整数向量的 4x4 矩阵
- 错误: 包含 <Kinect.h> 时未声明"_Out_"
- 为什么我们可以创建一个模板类结构,其中包含许多与声明结构时指定的参数不同的参数
- 如何声明包含结构的类的成员函数
- 在声明时,向前斜线或后斜线包含在C 上
- 使用声明包含未展开的参数包
- 如何声明包含对外部类的引用的成员变量
- 在声明包含类型的对象时遇到问题