我尝试将shared_ptr与deleter一起使用:
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
}
如何解决这个问题?
答案 0 :(得分:1)
您的deleter function
应该以{{1}}作为类型,例如,请查看以下Deleter实施:
A*
另外,你只声明了函数指针struct A{ };
void Deleter(A* p){ delete p; };
int main(){
std::shared_ptr<A> sp(new A, Deleter);
return 0;
}
,你需要实现它。
答案 1 :(得分:1)
答案 2 :(得分:0)
std :: shared_ptr p4(new int,std :: default_delete());
std :: shared_ptr p5(new int,[](int * p){delete p;},std :: allocator());