c++ - 与删除器共享指针

标签 c++ pointers

我尝试将 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/

相关文章:

C++ lambda 表达式 : captured pointer to STL container changing address after pop?

c++ - 直观地解释指针及其意义?

c - 无效的类型参数/不兼容的指针类型 C

c++ - 将 list<A*> 转换为 list<B*> ,其中 B 继承 A

c++ - 如何检查套接字在一段时间内没有接收

c++ - 编辑二维数组中的一系列元素?

c++ - 关于引用指针的说明

c++ - 我可以#define 多深?

c++ - 在播种伪随机引擎后, std::random_device 是否应该保持事件状态?

c - 3维字符数组?