【发布时间】:2012-06-11 19:44:14
【问题描述】:
我想创建一个类,它有一个 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 有一个名为“threshold”的变量,算法 B 需要该信息,因此,通常它必须使用 A.getThreshold 之类的东西从 A 询问它,但据我所知,我不能在字符串中调用对象函数(来自 xml 文件),所以我的解决方案只有一个 get 函数,我传递我想要的变量名,该函数会将它返回给我。
【问题讨论】:
标签: c++ boost return-type boost-any