我管理其析构函数是私有的,因为对象必须被分配到堆的类。
让我们假设这个类为A。
std::unique_ptr<A> a(new A());
Run Code Online (Sandbox Code Playgroud)
当这是一个范围时,析构函数被调用。
然而,的unique_ptr的默认行为是调用“公共析构函数”。
在这种情况下,我应该怎么做,而不会使析构函数公开?
您可以定义deleter
功能,使之friend
与你的类。
#include <memory>
class A{
friend struct D;
private:
~A() {}
};
struct D {
void operator()(A* a) const {
delete a;
}
};
int main(){
std::unique_ptr<A, D> a(new A());
return 0;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
370 次 |
最近记录: |