私はC++を学んでいるだけで、メソッドへのポインタに関しては問題があります。教えてください:メソッドへのポインタのトラブル
class One {
public:
int Add (int a, int b) {return a+b;}
};
typedef int (One::*pAdd) (int, int);
class Other {
public:
int Next (pAdd funct, int c){ return funct (c, 1);}
};
int main(){
One one;
Other other;
other.Next(one.Add, 2);
return 0;
}
私はMinGWによって報告されたように私はいくつかの問題があります。まず、コンパイラが。*または - > *の使用を主張しているので、私はfunctを正しく起動していません。この要請をどのように組み込むべきかわからず、どんな援助も歓迎されます。今、メソッドを静的にしてCスタイルのポインタやオブジェクトを渡し、Nextからメソッドを呼び出すことで問題を解決できましたが、メソッドへのポインタを理解したいと思います。基本的に、私はなぜone.Addが受け入れられる入力ではないのか困惑しています。呼び出すメソッドは明白に定義され(.Add)、私のtypedefに準拠しています。また、私はtypedefからクラス(1)のインスタンスを提供しているので、メソッドが実行されるコンテキストを提供しています。しかし、コンパイラの出力は、私が構文を逃しただけでなく、コンセプトを逃したように見えます。オブジェクトへのポインタをコンテキストとして単一の引数として渡す方法は?
:ここ
は、コードを働いて、変更されました。私はコミュニティに謝罪しますが、どのように質問を削除しますか? –
@gxsだけ移行されます。 –
こんにちはgxs、あなたの質問が自動的にStackOverflowに移動できるようにモデレータが通知されます。これはプログラマーであり、ソフトウェア開発に関する概念的な質問のサイトです。詳細については、std :: bind/boost :: bindとlambdaの提案について[FAQ](http://programmers.stackexchange.com/faq) –