我尝试将 shared_ptr 与删除器一起使用:
class A{ };
void (*foo)(){ };
int main(){
std::shared_ptr<A> sp(new A, foo); //error: too many arguments to function call,
//expected 0, have 1
}
如何解决?
最佳答案
你的deleter函数
应该以A*
为类型,例如看下面的Deleter实现:
struct A{ };
void Deleter(A* p){ delete p; };
int main(){
std::shared_ptr<A> sp(new A, Deleter);
return 0;
}
另外,你只声明了函数指针foo
,你需要实现它。
关于c++ - 与删除器共享指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31530324/