Умные указатели (уникальные указатели) и ссылки - PullRequest
0 голосов
/ 29 августа 2018

В моем коде у меня есть статический класс для хранения объектов. Чтобы делать вещи с непереносимостью (кастинг и т. Д.), Я сохраняю объекты на карте с 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, потому что владельцем должен быть только статический класс.

...