类模板特化,c++,模板形参列表中参数2不匹配
Class Template Specialisation, C++, mismatch at argument 2 in template parameter list
我有一个模板:
template <typename T, int size>
class Array
{
T A[size];
public:
T& operator[](int index) ;
};
template <typename T, int size>
T& Array<T,size>::operator[](int index)
{
if (index>=size || index<0)
return A[0];
else
return A[index];
}
及其专门化类:
typedef struct Data
{
int id;
char name[10];
double temp;
double quantity;
}Data;
template <>
class Array<Data, int>
{
};
我试着用它:
int main()
{
Array<Data, int> tab;
return 0;
}
但是我得到这个错误,不知道为什么:
错误:模板形参列表中参数2的类型/值不匹配for ' template class Array ' |
怎么了?
奇怪。我将代码更改为以下代码:
template <>
class Array<Data, 20>
{
};
int main()
{
Array<Data, 20> tab;
return 0;
}
现在好了。谢谢!
我只能猜测你实际上想要为Array<T, size>
创建一个模板专门化,其中T=Data
和size
没有指定。
template <int size>
class Array<Data, size> // partial specialization
{
};
当你实例化模板时,你必须指定一个常量大小:
int main()
{
Array<Data, 5> tab; // size=5 for this example
return 0;
}
相关文章:
- Qt SQLite没有查询或参数计数不匹配
- 模板参数推导失败,函数参数/参数不匹配
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- 错误:"模板<类_Tp,类_Dp>类 std::unique_ptr"的模板参数列表中参数 1 的类型/值不匹配
- 为什么使用不匹配的参数调用重载函数仍然有效
- 没有函数模板的实例与我不知道为什么的参数列表匹配
- 程序告诉我,即使它们明显匹配,参数也不匹配
- 模板参数'(type)0'与'EnumValue'不匹配
- 将构造函数添加到boost.python子类导致参数不匹配错误
- LPCSTR和wchar_t问题.由于参数不匹配,导致链接器错误
- 为什么可以将std::bind分配给参数不匹配的std::函数
- C++中的默认参数不匹配
- 布尔类型的参数不匹配
- 方法调用C++/数字参数不匹配
- NULL 与模板参数不匹配?
- C++ - 模板 + 'using' 子句 - 参数不匹配错误
- c++代码中的参数不匹配错误
- QT5迁移和Boost:if.hp:宏参数不匹配错误
- 为什么函数原型中的参数数量与定义中的参数不匹配
- 为什么我的函数参数不匹配