Пример: у меня есть класс CarPool, который создает много объектов Car. Он хранит их в vector<Car*> all_cars_;
Использование новых интеллектуальных указателей в коллекциях std
Car
класс фактически является базовым типом множества различных типов автомобилей (так vector<Car>
не будет работать, как я понимаю).
У меня есть некоторые Person
объекты, которые могут иметь доступ к некоторым из этих автомобилей. Класс Person
хранит их в vector<Car*> my_cars_;
.
Объект CarPool всегда будет переживать объекты Person и поэтому несет ответственность за владение. Из-за этого я думал о создании коллекции CarPool в vector<unique_ptr<Car>> all_cars_;
Следует ли обновлять классы Person
? Если да, то какова должна быть коллекция all_cars_
? Или они должны оставаться в качестве указателей старой школы? Старые школьные указатели все еще являются «современным» способом обращения к объектам?
Хм, я бы предпочел просто «вектор», если это возможно. –
@R. Martinho Fernandes Я согласен, но я ожидаю, что Car может быть базовым классом для различных различных производных типов автомобилей, и в этом случае доступ к ним с помощью указателя необходим, чтобы избежать нарезки. – YoungJohn
@R. На самом деле это базовый тип. Однако, если это не так, и я сделал вектор в классе CarPool, что бы у вас было в классе Person? –
neiled