如果我有一个模板类
template<typename T>
class C {
public:
void method1() { ... }
void method2() { ... }
std::string method3(T &t) {
// ...
std::string s = t.SerializeToString();
// ...
return s;
}
// ...
};
我想专门针对 T = std::string
但只更改 method3(T&)
(保留所有其他方法),或者更好的是,仅更改method3 的一部分,对于 T = std::string
将简单地变为 std::string s = t;
,对当前代码的影响最小(减少方法签名的重复,更少的子类化),我该怎么做?
编辑:我正在用 C++11 开发
最佳答案
你可以像那样使用专门化(不需要专门化整个类):
template<>
std::string C<string>::method3(string &t) {
// ...
std::string s = t;
// ...
return s;
}
关于c++ - 仅专门化模板类的一个方法(的一部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47035541/