考虑以下两个结构:
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;
编译对我来说还不错。