В моем коде у меня есть статический класс для хранения объектов. Чтобы делать вещи с непереносимостью (кастинг и т. Д.), Я сохраняю объекты на карте с unique_ptr
s.
std::map<std::string, std::unique_ptr<DummyClass>>Map;
Хранимые объекты имеют некоторые переменные-члены, которые я хочу обновить в своем коде (через привязки переменных), поэтому я передаю ссылку на хранимые объекты, чтобы иметь возможность их изменять.
DummyClass& GetObject(std::string name)
{
return *Map[name];
}
Чтобы обновить членов, я храню их на другой карте, в другом классе, чтобы связать их со строкой (я получаю значения через TCP / IP), что-то вроде этого:
updater->registerVariable("bindingString", dummyObject.position.x);
registerVariable
Метод также берет ссылку (на dummyObject.position.x
) и сохраняет его на своей карте.
std::map<std::string, std::vector<float&>> floatBindings;
Но здесь возникает проблема: я не могу хранить ссылки на карте привязок.
У кого-нибудь есть хорошая идея, что я мог бы сделать вместо этого? Было бы shared_ptr
путь идти? Но дело в том, что я не хочу использовать shared_ptr
s потому что владельцем должен быть только статический класс.
Задача ещё не решена.
Других решений пока нет …