gpt4 book ai didi

c++ - 参数接收的对象上的函数指针

转载 作者:行者123 更新时间:2023-11-27 23:09:24 26 4
gpt4 key购买 nike

我有一个接收对象实例和函数指针的函数。如何在我的对象实例上执行我的函数指针?

我试过:

void    Myclass::my_fn(Object obj, bool (*fn)(std::string str))
{
obj.fn("test"); // and (obj.fn("test"))
}

但没有任何效果。它告诉我“未使用的参数 my_fn 和 fn”

最佳答案

因为fn 不是Object成员 函数指针。为此你必须做例如

bool (Object::*fn)(std::string)

然后调用它你必须做

(obj.*fn)(...);

但是,如果你的编译器和库可以支持C++11,我建议你使用std::functionstd::bind :

void MyclasS::my_fn(std::function<bool(std::string)> fn)
{
fn("string");
}

然后调用my_fn函数为

using namespace std::placeholders;  // For `_1` below

Object obj;
myclassobject.my_fn(std::bind(&Object::aFunction, &obj, _1));

借助 std::function,您还可以使用其他函数指针或 lambda:

myclassobject.my_fn([](std::string s){ std::cout << s << '\n'; return true; });

关于c++ - 参数接收的对象上的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21241797/

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