我在头文件中有类似于以下的代码:
template<class A>
class List {
private:
QVector<A> _list;
};
其中 QVector 是标准的 QT 容器。
当我尝试像这样在另一个头文件中将类型为 List 的变量作为成员变量时:
class Model {
private:
List<int *> the_list;
};
我收到以下错误:
In instantiation of 'List<int *>':
instantiated from here
error: 'List<A>::_list' has incomplete type
基本上,我想要一个模板化的自定义列表,它使用内部 QVector 来存储数据项。
我假设我的语法有点不对,所以任何帮助将不胜感激。
最佳答案
确保在声明 class List { }
之前为 QVector
设置了 #include
头文件。如果省略它,则 QVector
是未定义类型,但因为 List
是模板化类,编译器不会省略错误消息,直到您实例化 List
第一次。
#include <QVector>
template<class A>
class List {
private:
QVector<A> _list;
};
关于模板化类中的 C++ 模板成员变量类型不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3571704/