我想要归档的是一些简单的方法来使一些变量持久化。 为此,我写了一个PeristenceProvider类,它包含了boost属性树的功能 将数据存储在xml / ini文件中。
目前我需要做这样的事情:
ClassA::ClassA()
{
m_valueI = PersistenceProvider::getInstance.get<int>("valueI");
}
ClassA::~ClassA()
{
PeristenceProvider::getInstance.set<int>("valueI", m_valueI);
}
但是有机会以这样的方式隐藏它:
class ClassA
{
Persist<int, "valueI"> m_ValueI;
}
答案 0 :(得分:1)
这可能但不完全是那样。您不能使用字符串文字来实例化模板。具有外部链接的字符串对象只允许是非类型参数。
因此,字符串常量必须定义为extern
并且为char[]
,而不仅仅是char*
。
参见示例(它将打印“Hello”和“World”,真的很酷,不是吗?):
extern const char hello[] = "Hello";
extern const char world[] = "World";
template<const char* s> struct X
{
X()
{
std::cout << s << std::endl;
}
};
X<hello> z1;
X<world> z2;
答案 1 :(得分:0)
听起来你并没有坚持大量的信息 - 只是一些选择参数。如果是这样,那么只需将函数调用包装在您自己的函数中,该函数带有两个参数 - 一个std :: string或const char *以及持久化项的类型。如果持久化的类型数量有限(例如int,double,std :: string),这将正常工作。