我想在没有调用rhs对象的析构函数的情况下为对象分配一个指针。 或者可能是另一种解决 这样可以提醒人们,没有人被召唤过。 我不想复制指针中的所有内容 因为里面可能有很多。
有没有办法做到这一点 或者我只需记得打电话给free()?
class Stuff {
public:
Stuff(SomeObj *pointer) {
this->pointer = pointer;
}
~Stuff() {
if(pointer) {
cout << "forgott to free pointer" << endl;
free();
}
}
void free() {
if(pointer) {
delete pointer;
pointer = NULL;
}
}
Stuff& operator=(const Stuff &rhs) {
if(pointer) {
cout << "forgot to free before assigning" << endl;
free();
}
return *this;
}
private:
SomeObj *pointer;
}
Stuff getStuff() {
Stuff stuff(new SomeObj(...));
return stuff;
}
int main() {
Stuff stuff = getStuff();
stuff = getStuff(); // rhs destructor is run destroying pointer
return 0;
}
答案 0 :(得分:0)
看起来您必须更改代码架构。
查看std :: unique_ptr&lt;&gt;,这可能会有所帮助。