模板化类中的C ++模板成员变量具有不完整的类型

时间:2010-08-26 02:45:12

标签: c++ templates

我在头文件中有类似以下的代码:

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来存储数据项。

我认为我的语法有点偏差,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:5)

在声明#include之前,请确保QVectorclass List { }的头文件。如果省略它,则QVector是未定义的类型,但因为List是模板化类,所以在您第一次实例化List之前,编译器不会省略错误消息。

#include <QVector>

template<class A>
class List {
  private:
    QVector<A> _list;
};