C++调用静态函数指针

标签 c++ pointers static function-pointers

我想将回调转发给函数指针。所以我声明了一个static (int*) m_pointer1,还有一个方法void RegisterCallback1( (int*)fct)

在 class1.h 中:

public:
   int RegisterCallback1( int (*fct) );
private:
   static int (*m_Callback1);

在 class1.cpp 中:

int class1::RegisterCallback1( int (*fct) )
{
    m_Callback1= fct;
}

然后,我想将回调转发给函数指针:

void class1::Callback1()
{
   (*m_Callback1)();
}

但是我得到一个编译器错误“表达式必须有(指针)- 函数类型 我遵循了教程并阅读了有关函数指针的内容,他们似乎以这种方式没有任何问题。有什么想法吗?

编辑: 所以,我声明 (int*)(void)m_Callback1 -Visual Studio 在那里需要一个 void ...- 那么如何调用带参数的registerCallback函数呢?

class1.RegisterCallBack1(  ??? - class2::callback -??? );

最佳答案

static int (*m_Callback1) 不声明函数指针,只是指向 int 的指针:您忘记了参数列表。你的意思是:

static int (*m_Callback1)();

int RegisterCallback1( int (*fct)() );

关于C++调用静态函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10304531/

相关文章:

c++ - Boost::Bimap 等价于双向 multimap

c - 结构有两个字段,每个字段都是一维数组。将结构对象传递给没有指针的函数,会改变结构对象吗?

c# - 如何在 C++ 和 C# 之间共享一个大字节数组

c - 如果函数声明不在头文件中,是否需要 static 关键字?

c++ - 静态常量字符串数组,如何使用

android - Google map (Android) 中的图像

C++方法签名问题

c++ - 'List::operator=': 必须返回一个值

c++ - consteval 会允许在函数参数上使用 static_assert 吗?

c - 在使用 realloc 之前是否需要释放指针变量?