gpt4 book ai didi

c++ - 这个指向非静态成员函数代码的指针不起作用的原因是什么?

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

<分区>

这就是我想要做的:

class A {
public:
void(*fPtr)();
};

class B {
int ib = 2;
public:
void memf() {
printf("ib = %i\n", ib);
}
};

class C {
int ic = 6;
public:
void memf() {
printf("ic = %i\n", ic);
}
};

int main()
{
B b;
C c;
A a1;
A a2;
a1.fPtr = b.memf;
a2.fPtr = c.memf;
}

基本上是一个具有函数指针的类。该函数指针可以指向普通函数或成员函数。

但是我在 Visual Studio 中遇到的错误:

Error   C2440   '=': cannot convert from 'void (__thiscall B::* )(void)' to 'void (__cdecl *)(void)'
Error C2440 '=': cannot convert from 'void (__thiscall C::* )(void)' to 'void (__cdecl *)(void)'
Error C3867 'B::memf': non-standard syntax; use '&' to create a pointer to member
Error C3867 'C::memf': non-standard syntax; use '&' to create a pointer to member

我知道这看起来像是重复的,也许是。我没有使用推荐的解决方案,例如使用 <functional> .

有人可以告诉我如何正确地做,以便我可以理解我做错了什么吗?我还想知道为什么标准方法不起作用。

换句话说:更正我的代码;)我真的很感激。

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