类析构函数删除其他类

时间:2018-03-30 06:52:45

标签: c++ class destructor

我需要帮助创建一个类析构函数。我真的不懂如何创造一个,但我明白他们做了什么。 由于new被称为创建用户和奖品,我需要编写一个析构函数,在所有用户和奖品上调用delete。

class User {
  public:
    string username;
    string realname;
    int points;
    set <string> phone_numbers;
};
class Prize { 
  public:
   string id;
   string description;
   int points;
   int quantity;
};

class CodeProcessor {
    ~CodeProcessor(); //destructor 
  protected:
    map <string, User *> Names;
    map <string, Prize *> Prizes;
}

2 个答案:

答案 0 :(得分:0)

你可以像这样实现析构函数

CodeProcessor::~CodeProcessor()
{
    for (auto n : Names)
    {
        delete n.second;
    }
    for (auto p : Prizes)
    {
        delete p.second;
    }
}

但话又说回来,为什么不让地图包含对象而不是指针?

答案 1 :(得分:0)

您需要遍历地图中的值并删除每个值。在C ++ 17中,您可以使用以下

for (auto [key, user] : Names) {
    delete user;
}
for (auto [key, prize] : Prizes) {
    delete prize;
}

有关在this answer

中循环地图的详细信息