【发布时间】:2011-09-05 00:41:30
【问题描述】:
我想在我的配置类中实现一些功能时遇到问题,我有一些不同类型的值,我想将它们存储在地图中。以前我使用 ExtendedString 类来存储所有数据,并在需要时使用模板函数将它们转换为想要的类型。然后在我的配置类中有一个map<ExtendedString,vector<ExtendedString> > 来将所有键存储在配置文件中。这是我的 ExtendedString 类的样子:
class ExtendedString : public std::string
{
public:
ExtenedString() : public std::string
{
}
template <class T> ExtenededString(T)
{
std::stringstream s;
*this = s.str();
}
template <class T>T as(){
istringstream s(*this);
T temp;
d >> temp;
return temp;
}
}
现在我想在加载配置文件时解析所有值,并且还具有在需要时转换为任何可能类型的功能。例如,如果我将某个值解析为 int 并且在我的运行时我需要将该值作为字符串,我希望能够立即将其转换,而且在这种情况下我不喜欢使用 boost,它是我的基类之一,我不想将 boost 链接到我正在开发的每个项目。
【问题讨论】:
-
我刚买了这把漂亮的电锯。谁能告诉我如何取下防护装置并粘上安全开关?
-
哈?什么意思?你是说我的问题无关紧要吗?
-
你不应该从标准库类继承。我在你的
ExtendedString类中看不到任何需要在类中的东西,只需使用免费函数。 -
@GMan 试图检查您的想法(或至少您的提示引导我的想法)是否可以实施
-
我的意思是,您充其量只是禁用了防止事故发生的功能。在最坏的情况下,您要求的代码几乎具有人类水平的智能——它还能如何在运行时决定如何转换,例如
set<DateAndTime>到map<string, Complex>?
标签: c++ arrays class templates generic-type-argument