c++ - 仅专门化模板类的一个方法(的一部分)

标签 c++ templates template-specialization specialization

如果我有一个模板类

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/

相关文章:

c++ - 如何确保所有 async_handler 在 boost::asio 停止之前完成?

c++ - 将字形索引转换为 Unicode 字符

c++ - 是否有一个 std::string 函数来附加空格直到给定的缩进级别

php - 锂中的部分

python - 如何将值传递给 Tornado 中的模板

c++ - 使用类型特征的部分类特化

c++ - 是否可以分别专注于 typedef 及其基础类型?

c++ - 类中 vector 的动态分配

c++11 - 无法从模板类推导出方法的第二个模板参数

c++ - 使用模板特化拆分可变参数包