Цель:
У меня есть много производных классов (позже, вероятно, появятся дополнительные производные классы), которые хранятся в древовидной структуре, и я хочу сериализовать каждый из этих классов в протобуфер, а затем зашифровать двоичные данные (предоставленные SerializetoArray).
Но каждый из этих классов должен быть зашифрован с различным ключом. Очевидно, что если я хочу расшифровать его, мне нужно знать, какой ключ использовался для шифрования.
Вопрос:
Существует ли простой способ присвоить уникальное целое число каждому из этих классов, чтобы число было одинаковым для всех сред выполнения (Linux, MacOS, Windows и т. Д.) И для каждого экземпляра класса? (Это также не должно измениться, если класс получит обновление версии.)
Одним из очевидных решений было бы определение числа вручную, но это будет непрактичным позже, так как я надеюсь, что многие из этих производных классов будут разработаны сообществом, и, таким образом, будет почти невозможно гарантировать их уникальность.
Есть ли лучшее решение?
Вот мои два цента:
Добавьте статическую переменную-член 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; }
}
Чтобы избежать дублирования значений, вы можете создать их, например, из перечисления.