ちょっと私は関数ポインタとそれらを渡して/それらを宣言する方法を把握しようとしているが、私の少しの問題を持っている私のButtonクラスのコンストラクタにポインタを渡し、関数ポインタも渡されたポインタ。関数ポインタの問題:渡して宣言する
- 私がButton(Func1)Button1を書き込むと、 ';'と表示されます。
- 私がButton(Func1)を書くとき;ボタンのデフォルトのコンストラクタはありません。
- Button(& Func1); Func1はイニシャライザが必要です。
- Button(& Func1())Button1;式は左辺値または関数指定子でなければならないと言います
私は間違っていますか?
void Func1(){std::cout << "This is a function\n";};
void Func2(){std::cout << "This is another function\n";};
class Button
{
private:
void (*Func)(void);
public:
void Activate(){ Func() ;};
Button(void (*Function)(void)){
this->Func = Function;};
};
Button(&Func1) Button1;
Button(&Func2) Button2;
Button1.Activate();
Button2.Activate();
ボタンButton1(Func1); ()のない関数の名前は実際にその関数の開始アドレスであるため、合法でなければなりません。 – Giorgio
はい、それも法的です。しかし、何も起こらない。 – kravemir
**** facepalm ****私はもっと寝る必要があります....ありがとう! – Griffin