我需要帮助创建一个类析构函数。我真的不懂如何创造一个,但我明白他们做了什么。 由于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;
}
答案 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
中循环地图的详细信息