我有一组函数和一个函数指针,在我的头文件中声明如下。为什么这个函数指针失败?
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)();'。 –