Код выглядит следующим образом:
Код: Выделить всё
class TestObject
{
public:
int someTestData;
};
class Test
{
public:
std::shared_ptr testPointer;
std::shared_ptr getTestVector()
{
return testVector;
}
private:
std::shared_ptr testVector;
};
Но теперь я не знаю, что произойдет, если последний общий ptr объекта в векторе будет удален.
- Удаляется ли объект из вектора?
- Вызывает ли это неопределенное поведение?
- Как я могу заархивировать желаемое поведение, если это не работает?
Чтобы уточнить, что мне нужно:
Мне нужен класс MemoryManager, у которого есть метод CreateTestObject, который создает новый TestObject и сохраняет его в вектор или какой-либо другой контейнер, который поддерживает быструю итерацию и возвращает какой-то общий_ptr вновь созданному объекту, чтобы объект, которому нужен новый TestObject, имел ссылку.
Теперь мне также нужен общий_ptr для TestObject, чтобы иметь возможность удалить TestObject из контейнера, в котором он хранится, когда последний общий_ptr выходит за пределы области видимости, чтобы у меня не остался вектор, полный неиспользуемых TestObjects.
Подробнее здесь: https://stackoverflow.com/questions/584 ... n-a-vector
Мобильная версия