C++ c++;持久化数据
我想要归档的是一种使一些变量持久化的简单方法。 为此,我编写了一个PeristenceProvider类,它封装了boost属性树功能 将数据存储在xml/ini文件中 目前我需要做这样的事情:C++ c++;持久化数据,c++,templates,C++,Templates,我想要归档的是一种使一些变量持久化的简单方法。 为此,我编写了一个PeristenceProvider类,它封装了boost属性树功能 将数据存储在xml/ini文件中 目前我需要做这样的事情: ClassA::ClassA() { m_valueI = PersistenceProvider::getInstance.get<int>("valueI"); } ClassA::~ClassA() { PeristenceProvider::getInstance.s
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;
}
ClassA::ClassA()
{
m_valueI=PersistenceProvider::getInstance.get(“valueI”);
}
ClassA::~ClassA()
{
PeristenceProvider::getInstance.set(“valueI”,m_valueI);
}
但有没有机会用这样的方式来掩盖这一点:
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;
}
A类
{
坚持价值观;
}
听起来你并没有保存大量的信息——只是一些选择参数。如果是这样的话,那么只需将函数调用封装在您自己的函数中,这些函数包含两个参数——一个std::string或const char*和要持久化的项的类型。如果被持久化的类型的数量有限(例如int、double、std::string),这将很好地工作。这是可能的,但不完全是这样。不能使用字符串文字来实例化模板。具有外部链接的字符串对象只能是非类型参数。
所以字符串常量必须定义为extern
和char[]
,而不仅仅是char*
参见示例(它将打印“Hello”和“World”,非常酷,不是吗?)
extern const char hello[]=“hello”;
外部常量字符世界[]=“世界”;
模板结构X
{
X()
{
std::我想你可以接近模板,但对于你来说,你需要宏魔法才能做到这一点。如果你需要从变量名生成字符串标识符,你需要宏。你可以将字符串文本作为模板参数传递吗?我不介意添加第二个模板参数,其中包含传递模板字符串的名称不允许使用参数!您可以使用序数。除此之外,我不会使变量持续存在,而是将其存储在精确的位置,或者使用封送器/封送器体系结构。Poco的配置框架非常适合做这样的事情: