C++持久化数据

标签 c++ templates

我想要存档的是一种使某些变量持久化的简单方法。 为此,我写了一个 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;
}

最佳答案

这是可能的,但不完全是那样。您不能使用字符串文字来实例化模板。具有外部链接的字符串对象只允许是非类型参数。 所以字符串常量必须定义为 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;

关于C++持久化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11192376/

相关文章:

c++ - 完美转发模板化 C++ 类中的函数

c++ - 让奴隶在MPI中互相等待

c++ - 仅在 Release模式下出现编译错误——STL vector

c++ - 为什么类成员函数是内联的?

c++ - 确定可变模板参数是编译时间

javascript - 了解 stache 模板中的 {{.0}} {{.1}}

c++ - C++应用多线程中的Lock方法

C++:无法使运算符<<成为模板化嵌套类的友元

c++ - 我的Rabbit Hole模板有问题吗?

c++ - C++ Basic 中的类模板