Значения указателей?

Как я могу определить, является ли указатель R-значением или я не знаю, о чем говорю … Эта действительно нелепая идея пришла мне в голову, когда я пил пиво …

Что делать, если у вас тупой программист / пользователь ..

Предположим, у вас есть следующий класс:

template<typename T>
class Container
{
private:
std::vector<T> Storage;
public:
Container(T Anything) : Storage() {Storage.push_back(Anything);}
}

и пользователь делает:

Container<Object*> C(new Object(Params));

Тогда как я могу удалить это? Я хочу быть в состоянии отличить вышесказанное от нижеследующего:

Object* O = new Object(Params);
Container<Object*> C(O);

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

Как это может быть сделано? Это указатель RValue? Как я это называю?

-1

Решение

Проще всего было бы обернуть голые указатели в некоторый контейнер ресурсов, например shared_ptr,

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]