1

STL マップを持つクラスと、メンバー変数として別のクラスがあります。

これが私のクラス定義です:

class demo
{
    map<int, map<int, string> > mymap;

    class temp
    {
        int a, b;
    }

    map<string, pair<string, temp*> > mymap1;

    demo();
    ~demo();
}

初期化方法mymapとコンストラクターmymap1の使用方法。また、デストラクタを使用して使用NULLしたメモリを解放したいと考えています。temp*それ、どうやったら出来るの?

4

1 に答える 1

1

とはポインタではなくオブジェクトであるため、初期化することはできmymapませmymap1ん。NULL

いくつかのパラメーターでそれらを初期化したい場合は、コンストラクターの初期化リストで行う必要があります。

demo() : mymap(/* initialization parameters */),
         mymap1(/* initialization parameters */) {}

また、のように生のポインターを使用しないでくださいtemp*。代わりに、 のようなスマート ポインターを使用しますstd::unique_ptr<temp>。スマート ポインターを使用すると、自動的にメモリが解放されるため、メモリを解放する必要はありません。

マップの宣言を次のように変更するだけですmymap1

map<string, pair<string, unique_ptr<temp>>> mymap1;
于 2013-10-28T18:15:44.937 に答える