【发布时间】:2017-10-30 10:09:42
【问题描述】:
我有这个模板结构,我需要为不同的数据类型编写不同的函数:
template <typename T, int _len>
struct Field {
T data;
int len;
Field(){
len = _len;
}
};
如何将它专门用于多种类型?像这样的:
template <>
void Field<int,int> {
...
void function() {
...
specialization for int
...
}
...
};
template <>
void Field<char,int> {
...
void function() {
...
specialization for char
...
}
...
};
template <>
void Field<String,int> {
...
void function() {
...
specialization for String
...
}
...
};
我接受任何类型的建议,我什至可以考虑使用其他类型的数据结构。我喜欢使用模板来定义这样的“字段”:
Field <String, 10> myField
谢谢!!
【问题讨论】:
-
让我澄清一下。您想为(例如)类型
String编写一个专门的Field版本,但仍然可以用不同的_len值调用它吗? -
请注意,让
len成为通用Field的成员是没有意义的——这只是浪费每个Field对象中的空间。最多你会想要:static constexpr int len = _len;