テンプレートを使用するC++のメソッドfindID
があります。このメソッドでは、入力タイプに基づいて条件を実行できます。テンプレートパラメータU
は、int型またはstring型のいずれかになります。私はIDのタイプに基づいて別の条件を実行したい。変数が文字列かどうかをテストするC++の条件文
私が持っているコードにされては、次のとおりです。
template <typename S>
template <typename U>
S * findID(U ID){
for (typename vector<S*>::collectionsIter element = collection.begin() ; element != collection.end(); ++element)
if((*element)->getID() == ID) return *element;
return NULL;
}
私は私のコードは次の操作を実行したい:
template <typename S>
template <typename U>
S * findID(U ID){
***if ID is an int:
for (typename vector<S*>::collectionsIter element = collection.begin() ; element != collection.end(); ++element)
if((*element)->getID() == ID) return *element;
***if ID is a string:
for (typename vector<S*>::collectionsIter element = collection.begin() ; element != collection.end(); ++element)
if((*element)->getStringID() == ID) return *element;
***else
return NULL;
}
私のことができるようにしたいので、私はこれをしたい理由がありますIDの文字列変数をgetStringID()の文字列メソッドと比較し、IDのint変数をgetID()のintメソッドに比較します。さらに、これらのメソッドを別々のメソッドに分割したくないので、テンプレートとこれらの条件を使用してメソッドを1つのメソッドにリファクタリングしようとしています。ここで
を何がしたいことは、 "テンプレートの部分特殊化" と呼ばれています。あなたの好きなC++リファレンスでそれを探してください。あなたの道を見つけるでしょう。 –
「コレクション」から来た場所はどこですか? – Jarod42
コレクションは、コレクションクラスに格納されたベクトル
のプライベートメンバーです。 – MastRofDsastR