考虑以下两个结构:

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

struct MyObject{
QList<struct duplet> myList;
}


编译器将引发以下错误:

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

是我绊脚的语法错误还是非法声明?

谢谢,
德科斯托

最佳答案

我认为,只是必须完全指定duplet作为模板,才能用作模板参数?编译器无法创建mylist实例,因为它不知道它是什么类型。 “ duplet”不是(完整)类型; “ duplet 对于某些类型T”是。

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




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


编译对我来说还不错。

08-26 19:24