我在头文件中有类似以下的代码:
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来存储数据项。
我认为我的语法有点偏差,所以任何帮助都会受到赞赏。
答案 0 :(得分:5)
在声明#include
之前,请确保QVector
为class List { }
的头文件。如果省略它,则QVector
是未定义的类型,但因为List
是模板化类,所以在您第一次实例化List
之前,编译器不会省略错误消息。
#include <QVector>
template<class A>
class List {
private:
QVector<A> _list;
};