私はテンプレートクラスだけ(の一部)は、テンプレートクラスの一つの方法を専門
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;
となるでしょう。
EDIT:
C++ 17ではstd::string init(std::string& t)
{
return t;
}
template <typename T>
std::string init(T& t)
{
return t.SerializeToString();
}
template <typename T>
std::string method3(T &t) {
// ...
std::string s = init(t);
// ...
return s;
}
:私はあなただけs
の初期設定を変更する必要がある場合は、オーバーロードを使用することができますC++ 11
を、私は、最小限の例を掲載、しかしで現実私はクラス全体を専門にする必要があります – fferri
@fferri:文字通り**は「テンプレートクラスの1つのメソッドだけを専門にする」と言います**。 –
@ Jarod42:クラスのテンプレートパラメータを削除することをお勧めしますか?または私はあなたの答えを誤解しました。 – fferri