0

考虑以下两种结构:

template <typename T> struct duplet{
  QString str;
  T value;
}

struct MyObject{
QList<struct duplet> myList;
}

编译器抛出以下错误:

错误 C3203:“Duplet”:未专门化的类模板不能用作模板参数“T”的模板参数,应为真实类型

是我偶然发现的语法错误还是非法声明?

谢谢,德科斯托

4

1 回答 1

2

我认为它只是作为模板必须完全指定duplet才能用作模板参数?编译器无法创建 mylist 实例,因为它不知道它是什么类型。'duplet' 不是(完整的)类型;'duplet< T > for some type T' 是。

struct MyObject {
QList<struct duplet<int> > myList;

template <typename T>
struct MyObject {
QList<struct duplet<T> > myList;

编译对我来说很好。

于 2011-03-31T00:29:12.193 回答