std :: mapで正しい変数を見つけて返すために、std::stringを受け取る単一のgettemplateメソッドを持つクラスを作成したいと思います。
std :: mapは任意のタイプの変数を格納する必要があるため、boost :: anyを使用しました。これまでのところ、std::mapは次のようになっています。
std::map<std::string, boost::any> variables_;
get関数については、次のようなものを試しました。
template <typename T>
T get(std::string& parameter)
{
return variables_[parameter];
}
しかし、幸運なことではありません、私の質問は、それも可能ですか?もしそうなら、どのように?
基本的な考え方は、クラス内のすべての特定の変数に特定のメソッドを作成したくないので、他のクラスはそのすべてのgetメソッドについて知る必要がないということです。
ありがとう!
ps:なぜこれが欲しいのかと尋ねる人のために、ここに履歴書があります。私にはたくさんのアルゴリズムがあり、特定の順序で実行され、最後に実行されたアルゴリズムにそれを使用します。だから、私が欲しいのは、どのアルゴリズムが実行されるか、どの順序で、どのデータを別のアルゴリズムから使用するかを示すxmlファイルを作成することです。
したがって、たとえば、アルゴリズムAには「threshold」という名前の変数があり、アルゴリズムBはその情報を必要とするため、通常はA.getThresholdなどを使用してAに問い合わせる必要がありますが、私が知る限り、 (xmlファイルから)文字列内の名前でオブジェクト関数を呼び出すので、私のソリューションには、必要な変数名を渡すget関数のみが含まれ、その関数はそれを返します。