【问题标题】:c++ unique persistent class identifierc++ 唯一持久类标识符
【发布时间】:2014-04-19 10:56:43
【问题描述】:

目标:

我有许多派生类(稍后可能会有其他派生类)存储在树结构中,我想将这些类中的每一个序列化到一个原型缓冲区中,然后加密二进制数据(由 SerializetoArray 提供)。 但是这些类中的每一个都应该使用不同的密钥进行加密。所以很明显,如果我想解密它,我需要知道使用哪个密钥来加密。

问题:

是否有一种简单的方法可以为这些类中的每一个分配一个唯一的整数,以便在每个系统(Linux、MacOS、Windows 等)的运行时以及该类的每个实例中,该数字都是相同的? (如果类得到版本更新,它也不应该改变。)

一个明显的解决方案是手动定义一个数字,但这在以后将不切实际,因为我希望这些派生类中的许多将由社区设计,因此几乎不可能保证它们的唯一性.

有没有更好的解决方案?

【问题讨论】:

  • 管理来自元格式(例如 XML 左右)和数据库的文件,并使用用于生成 .proto 文件的额外工具生成它们。
  • 我觉得太费劲了,不会有那么多课。

标签: c++ protocol-buffers uid


【解决方案1】:

这是我的两分钱:

为每个类添加一个静态 const 成员变量,并带有所需的值。

这样,同一类的每个实例将始终具有相同的值。 类似:

class MyClassA
{
   static const int myVal = 1;
public:
   inline myVal() const { return myVal; }
}

class MyClassB
{
   static const int myVal = 2;
public:
   inline myVal() const { return myVal; }
}

例如,为了避免重复值,您可以从枚举中创建赋值。

【讨论】:

  • 您也可以将它们设为GUIDs。这种模式经常在 Windows COM 中用于识别对象。
猜你喜欢
  • 2011-11-19
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
  • 2018-06-30
  • 2012-06-01
  • 2010-11-28
  • 2016-02-18
  • 2014-03-05
相关资源
最近更新 更多