我有一組函數和一個函數指針,在我的頭文件中聲明如下。爲什麼這個函數指針失敗?
public: // User declarations
void __fastcall TTopForm::Method1(void);
void __fastcall TTopForm::Method2(void);
void __fastcall TTopForm::Method3(void);
void __fastcall (TTopForm::*Method)(void) ;
然後在我的節目,我做這個
Method = Method1;
生成此錯誤消息:「成員函數必須被調用或採取其地址。」 所以當然我嘗試這個,但沒有運氣。
Method = &Method1;
我在做什麼錯?我是一位電路設計師,而不是代碼專家,所以請給出一些明確的代碼。
感謝您的答案。我會發布我爲其他任何可能使用C++ Builder所做的工作。我在他們的幫助文件中使用了typedef。在typedef中省略__fastcall是我的錯誤之一。
class TTopForm : public TForm
{
typedef void (__fastcall TTopForm::* TMethod)(void);
...
public: // User declarations
void __fastcall TTopForm::Method1(void);
void __fastcall TTopForm::Method2(void);
void __fastcall TTopForm::Method3(void);
...
然後在我的代碼:
TMethod Method = &TTopForm::Method1;
(TopForm->*Method)();
謝謝你,你的語法的作品,但現在()方法提供了一個「調用非功能」的錯誤。根據你的評論,我嘗試在函數的參數列表中添加TObject * Sender,但這沒有幫助。 –
我看不到代碼,但在你的問題中'方法'是一個*指針*成員函數。您需要提供要調用它的對象。例如,假設你有一個類型爲「TTopForm」的對象't',你可以這樣調用它:'(t。* Method)();'。 –