gpt4 book ai didi

c++ - 在这种情况下如何传递成员函数而不是函数?

转载 作者:行者123 更新时间:2023-11-28 04:31:55 26 4
gpt4 key购买 nike

<分区>

我在一个类中使用一个对象来实现它的功能。这个对象的类定义的头部包含一个 typedef,然后是类声明:

typedef void (*Foo)(int arg);
class Bar
{private : double func(Foo f){};}

在我的类中,我想创建一个成员函数将其传递给 func :

class myClass
{
private :
Bar bar;
void my_func(int arg);
void my_caller();
};

在 .cpp 中:

void myClass::my_caller()
{
bar.func(&myClass::my_func);
}

返回错误“没有匹配函数调用 Bar::func...”。我的理解是typedef中使用的类型不是“指向成员函数的指针”而是“指向函数的指针”。我想我必须更改此 typedef 才能更改它,但我不知道如何更改。

我是 C++ 的绝对初学者,所以我在这里可能偏离正轨。

编辑:

我理解我必须对 typedef 进行更改以创建指向成员函数的指针。问题在于此 typedef 位于不同的头文件中,因此编译器返回“'myClass' 尚未声明”。

相反,我将研究仿函数和 std::function 库。

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