我有一个带有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*
使用的内存。我该怎么做?
答案 0 :(得分: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;