gpt4 book ai didi

c++ - 将指针传递给静态方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:47:22 25 4
gpt4 key购买 nike

为什么编译器将 &Foo::foo 视为 void (*)()。我希望它被视为 void(Foo::*)() 而不是因为它是 Foo 的成员。

class Foo
{
public:
static void foo ( void ){}
};

void foo ( void(Foo::*)(void) ){}

int main()
{
foo(&Foo::foo); // error: cannot convert ‘void (*)()’ to ‘void (Foo::*)()’
return 0;
}

最佳答案

您将函数 foo 声明为static

因此它不是 Foo 实例的成员函数。

此代码有效:

class Foo
{
public:
static void foo ( void ){}
void foo2() {}
};

void foo ( void(*)(void) ){}
void fooMember ( void(Foo::*)(void) ){}

int main()
{
foo(&Foo::foo);
fooMember(&Foo::foo2);
return 0;
}

编辑:我更新了描述并添加了一段代码。

关于c++ - 将指针传递给静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20334922/

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