Общий указатель на объект в вектореC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Общий указатель на объект в векторе

Сообщение Anonymous »

Я пытаюсь выяснить, что произойдет, если вы создадите общий указатель, указывающий на объект, содержащийся в векторе.

Код выглядит следующим образом:

Код: Выделить всё

class TestObject
{
public:
int someTestData;
};

class Test
{
public:
std::shared_ptr testPointer;

std::shared_ptr getTestVector()
{
return testVector;
}

private:
std::shared_ptr testVector;
};
Проблема в том, что я хочу не только поддерживать быструю итерацию по всем объектам TestObjects, но и предоставлять общие указатели на отдельные объекты в векторе.
Но теперь я не знаю, что произойдет, если последний общий ptr объекта в векторе будет удален.
  • Удаляется ли объект из вектора?
  • Вызывает ли это неопределенное поведение?
  • Как я могу заархивировать желаемое поведение, если это не работает?
РЕДАКТИРОВАТЬ:

Чтобы уточнить, что мне нужно:

Мне нужен класс MemoryManager, у которого есть метод CreateTestObject, который создает новый TestObject и сохраняет его в вектор или какой-либо другой контейнер, который поддерживает быструю итерацию и возвращает какой-то общий_ptr вновь созданному объекту, чтобы объект, которому нужен новый TestObject, имел ссылку.

Теперь мне также нужен общий_ptr для TestObject, чтобы иметь возможность удалить TestObject из контейнера, в котором он хранится, когда последний общий_ptr выходит за пределы области видимости, чтобы у меня не остался вектор, полный неиспользуемых TestObjects.

Подробнее здесь: https://stackoverflow.com/questions/584 ... n-a-vector
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»