-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 に答える