目标:
我有许多派生类(后面可能会有其他派生类)存储在树结构中,我想将每个类序列化为一个protobuffer,然后加密二进制数据(由SerializetoArray提供)。 但是每个类都应该用不同的密钥加密。很明显,如果我想解密它,我需要知道哪个密钥用于加密。
问题:
是否有一种简单的方法可以为每个类分配一个唯一的整数,以便在每个系统(Linux,MacOS,Windows等)和每个类的实例上运行时间的数字相同? (如果类获得版本更新,它也不应该改变。)
一个明显的解决方案是手动定义一个数字,但稍后这将是不切实际的,因为我希望这些派生类中的许多将由社区设计,因此几乎不可能保证它们的唯一性
有更好的解决方案吗?
答案 0 :(得分: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; }
}
为了避免重复的值,您可以创建例如从枚举中分配它们。