-1

我怎么知道一个指针是一个 RValue 还是我不知道我在说什么......喝啤酒时这个非常荒谬的想法突然出现在我的脑海里......

如果您有愚蠢的程序员/用户怎么办..

假设您有以下课程:

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 指针吗?我怎么称呼它?

4

1 回答 1

3

最简单和正确的做法是将裸指针包装在一些资源容器中,例如shared_ptr.

于 2013-03-13T03:37:06.530 回答