我想创建一个具有单个 get 模板方法的类,该方法将接收 std::string 以在 std::map 中找到正确的变量并返回它。
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 有一个名为“阈值”的变量,算法 B 需要该信息,因此,通常它必须使用 A.getThreshold 之类的东西从 A 询问它,但据我所知,我可以t 在字符串中调用一个对象函数(来自 xml 文件),所以我的解决方案是只有一个 get 函数,我传递我想要的变量名,该函数会将它返回给我。