C++では、クラスAのメソッドメンバーをクラスBからポインタを使って呼び出すにはどうすればよいですか?ところで、クラスAとクラスBは異なるタイプです。異なるクラス型のメンバー関数に変数を指す
ポインタがメンバ関数を指しているとき、クラス内のメンバ関数しか指すことができないことを読んでいます。しかし、私はどのようにクラス外のメンバ関数を指すことができますか?
例えば:私は次のようにあなたがそれを実行することができると思い
class A
{
public:
int add(int x)
{
return x+x;
}
};
int main()
{
typedef int (A::*pointer)();
pointer func = &A::add;
A objt;
B objt2;
obt2.*func(2);// the compiler give me an error of incompatible with object type ‘B’
return 0;
}
てみ '(obt2 * FUNC。)(2)' –
@Chet:のインスタンスで 'A'メンバ関数を呼び出していることを解決していません'B'は無意味です。 – ildjarn
このコンセプトで解決しようとしている問題は、おそらくもっと簡単に解決されています。 C++では、Smalltalkやその他の純粋なOO言語とは異なり、メソッドと関数は同じものです。継承や目的を達成するためのデザインパターンなど、言語の実用的な機能を使用するようにソリューションを並べ替えます。あなたが実際の目標を分かち合うと、誰かが有効なアプローチを示唆することができるかもしれません。 –