Итак, я довольно много гуглил, пытаясь выяснить, есть ли какой-нибудь лучший умный указатель, чтобы справиться с этим, но я не смог сделать правильный выбор.
struct Car
{
int m_doors;
int m_headlights;
//etc..
}
Позволяетскажи у меня какой-то класс автомобилей.У меня также есть std::map<int carkey, Car*>
, который является JunkYard.
Автомобиль * может быть добавлен в JunkYard каким-либо Водителем, сам Водитель новичок в Автомобиле, но водитель немедленно теряет всю ответственность за Автомобиль *.
Я бы хотел, чтобы JunkYard отвечал за все свои автомобили. Автомобили на JunkYard могут получить доступ к людям, чтобы снять, скажем, части и взять металлолом из машины, или могут быть разбиты, но JunkYard уничтожает его навсегда.
В конце дня JunkYard уничтожает все свои автомобили и отключается.
-
A) Если бы это было многопоточное приложение, доступ к которому могли получить водителимашины одновременно, в то время как JunkYard мог уничтожать машины, я думал, что вероятно будет лучше использовать shared_ptr?Это излишне, хотя?Другие потоки могут получить доступ к машине, но они никогда не получат долгосрочное владение ею, она всегда должна принадлежать JunkYard.
B) Если бы это был однопоточный, то это был бы лучший выбор - при условии, что он все ещекарта .Я хочу, чтобы контейнер забрал машину, удалив Автомобили сами.Например, вызов map.erase (...) должен удалить указатель, а также удалить его с карты.