gpt4 book ai didi

c++ - 如何将 void (myClass::*)() 转换为 void (*)()

转载 作者:搜寻专家 更新时间:2023-10-31 00:54:09 24 4
gpt4 key购买 nike

我目前正在 Unreal Engine 上开发一个 C++ 项目,但我无法解决这个问题。

class A
{
public:
void (* array[10])();

//Add Function to an array
void AddFunctionToArray(void(*function)());
};

class B
{
public:

A a;

//Sending a B function to A
void SendMyFunction();
void Foo();
};

void B::SendMyFunction()
{
a.AddFunctionToArray(&B::Foo);
}

我收到错误:无法将 void (B::*)() 转换为 void (*)()

如何将函数指针从我的一个类发送到另一个类?

最佳答案

void (B::*)() 是指向非静态成员函数的指针,而 void (*)() 是指向非静态成员函数的指针-成员函数。两者之间没有转换。

B::Foo 设为静态可以解决这个问题。但是,您将无权访问 B 的实例成员。

请注意,使用函数指针(成员或非成员)是传递函数对象的旧式。一种更现代的方法是使用 std::function对象,可以由对象及其成员函数之一的组合构造。

关于c++ - 如何将 void (myClass::*)() 转换为 void (*)(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46228653/

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