これは誰かが以前に尋ねた質問かもしれませんが、私はそれを見つけることができません...
ファイルにクラスがあり.hpp
ます:
class A{
public:
A(){//constructor}
~A(){//destructor}
//some public methods and arguments
template<typename Type>
void func(Type t){//do something for numbers}
private:
//some private methods and arguments
}
テンプレート メソッドは、int、double では機能するはずですが、string では機能しません。したがって、私のファイルでは、数字に対して.hpp
何をするかを定義し、私のファイルでは次のように書きました。func
.cpp
template<>
void A::func(std::string t){ // do something in that case}
しかし、関数func
をで使用するとstd::string
、プログラムは数値のメソッドを呼び出します...そのため、.hpp
ファイルを次のように置き換えました。
class A{
public:
A(){//constructor}
~A(){//destructor}
//some public methods and arguments
template<typename Type>
void func(Type t){//do something for numbers}
void func(std::string s);
private:
//some private methods and arguments
}
そして私の.cpp
ファイルは次のようになりました:
void A::func(std::string t){ // do something in that case}
そして、すべてが機能します!
私の質問は、これは正しい方法ですか?