[英]C++ calling static function pointer
我想將回調轉發給函數指針。 所以我聲明了一個靜態(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)() );
您尚未聲明函數指針,而已聲明普通數據指針。 您在聲明末尾缺少()。
您可以嘗試使用typedef作為回調函數的簽名來限制Oli和Dave指出的missing()錯誤: typedef int (*)() CallBack;
這至少具有讓您仔細考慮方括號的確切數目的優點,而不是讓您在代碼中使用該功能的每個地方考慮一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.