【发布时间】:2018-02-24 00:02:18
【问题描述】:
我目前正在使用虚幻引擎开发一个 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);
}
我收到错误:can't convert void (B::*)() to void (*)()
如何将函数指针从我的一个类发送到另一个类?
【问题讨论】:
-
您可能希望使用
std::vector而不是 C 样式的数组。 -
B::Foo需要B才能运行。虚幻引擎没有B,所以它不能调用它。制作B::Foostatic或使其成为B之外的免费函数,这样它就不需要B。 -
如果 Unreal API 提供了一个“闭包”值,该值被传递回回调(例如,在 C API 中,它通常类似于
void *data),那么您可以传递一个指向包含 @ 的小结构的指针987654332@ 和(B::*)(),然后使回调成为一个包装函数,它将void *data闭包指针转换回您的结构,然后调用适当的函数。 (或者更简单地说,将它们绑定到一个 lambda 对象中,将其粘贴到一个std::function对象中,然后让回调将void *data转换为std::function类型并调用它。)
标签: c++ function pointers unreal-engine4