1

我有一个带有 STL 映射的类和另一个类作为成员变量。

这是我的类定义:

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

    class temp
    {
        int a, b;
    }

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

    demo();
    ~demo();
}

如何初始化mymapmymap1使用NULL构造函数。我还想释放temp*使用析构函数使用的内存。我怎么做?

4

1 回答 1

1

您不能初始化mymapmymap1to 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 回答