我有一个“假设”类别,有两处提及现有斜体。 我想制造一种“影印”方法,深入复制这些墨迹。 我认为我永远不必人工操作<代码>delete。 在我的法典中,由于聪明才智者,我不得不在这种解决办法中提出反对。 此外,这项任务过于复杂(我需要重复几个班)。 是否有更直截了当的解决办法?
注:我不想在每一物体中增加一个ool子(flag)成员,以确定必须删除ts(就我而言,它不比<代码>std:<>/code>:> 司机检查费用
#include <set>
struct sum {
const int &a, &b;
static std::set<const int*> allocated_ints;
sum(const int& a, const int&b): a(a), b(b) {}
sum copy() const {
sum res(*new const int(a), *new const int(b));
allocated_ints.insert(&res.a);
allocated_ints.insert(&res.b);
return res;
}
~sum() {
if (allocated_ints.count(&this->a)) {
delete &this->a;
delete &this->b;
allocated_ints.erase(&this->a);
allocated_ints.erase(&this->b);
}
}
};
std::set<const int*> sum::allocated_ints;