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

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

我假设我的语法有点不对,所以任何帮助将不胜感激。

最佳答案

确保在声明 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/

相关文章:

javascript - Ractive.js,通过命名属性访问父属性

c++ - 这些值模板参数是否相同?

C++:template<class> 是什么意思?

c++ - 'unrelated types' 之间的 static_cast

c++ - 模板类的友元函数

c++ - 在 C++ 中将指针分配给数组

c++ - C++ 的什么特性允许模板类在没有模板参数的情况下引用它们自己?

c++ - 从模板类继承和调用模板函数时出错

c++ - 在 Solaris 上构建 Boost

c++ - 为模板类定义 numeric_limits max 函数