gpt4 book ai didi

c++ - 构造函数中的成员函数指针

转载 作者:可可西里 更新时间:2023-11-01 18:17:03 26 4
gpt4 key购买 nike

我尝试将 std::shared_pointer 与删除器一起使用。我尝试使用成员函数作为删除器。但是它无法编译。编译器给了我一条错误消息,但我不明白为什么它不起作用。有人知道为什么它不起作用吗?非常感谢。

简化代码如下,

#include <memory>

class MemberFunctionPointerInConstructor {
public:
MemberFunctionPointerInConstructor(void) {
std::shared_ptr<int> a = std::shared_ptr<int>(new int(1), deleter); // this line makes a compiler error message
}

void deleter(int* value) {
delete value;
}
};

编译器的错误信息如下,

error: invalid use of non-static member function
std::shared_ptr<int> a = std::shared_ptr<int>(new int(1), deleter);
^

非常感谢。

最佳答案

要使用未绑定(bind)到类实例的成员函数,您必须声明方法 static

static void deleter(int* value) {
delete value;
}

关于c++ - 构造函数中的成员函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35799621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com