A
というクラスがあり、メソッドがvoid foo()
であるとします。 &A::foo
を使ってfoo()
へのポインタを得ることができますが、このポインタはインスタンス化されたオブジェクトではなく、クラスの型に依存しているようです。 A
という2つのオブジェクトa1
とa2
がある場合、foo()
メソッドがa1
の場合とa2
の場合の違いを、ポインタ、メンバー関数ポインタ、またはポインタアドレスを使用してどのようにすることができますか?基本的にはvoid foo()
メソッドを参照するポインタをa1
オブジェクト内で取得できるようにしたいと考えています。void foo()
メソッドを参照するポインタと異なるのはa2
です。ありがとうございました。メンバー関数の比較ポインタ
-1
A
答えて
0
私はあなたがそれらを異なったものにすることはできないと思います。 a1-> foo()とa2-> foo()は基本的に同じです。
0
ここでは、オブジェクト(またはクラスのインスタンス)の概念について混乱していると思います。オブジェクトはクラスの青写真のようなものです。 オブジェクトごとにメンバー/メンバー関数を異ならせることはできません
たとえば、
class A
{
int result;
public:
void add(int x, int y)
{
this->result = x + y;
}
}
クラスAのすべてのオブジェクトには、メンバー変数resultおよびメンバー関数add()
が含まれます。したがって、obj1->add()
とobj2->add()
は、オブジェクト自体が互いに異なる属性を持っていても、同じadd()
関数を呼び出します。
obj1->add(1,2)
は
obj2->add(1,3)
はことがobj2->result
をもたらす一方、ことがobj1->result
をもたらすであろう。
関連する問題
- 1. 比較演算子への関数ポインタ
- 2. 整数とポインタの比較
- 3. ポインタと整数の比較?
- 4. メンバー関数のポインタがコンストラクタ
- 5. CURLOPT_WRITEFUNCTIONメンバー関数へのポインタ
- 6. メンバー関数ポインタの配列
- 7. ポインタ間の比較
- 8. GL_GLEXT_PROTOTYPESの定義と関数ポインタの取得の比較
- 9. Cの整数へのポインタを比較
- 10. ポインタと整数の警告比較
- 11. 比較型IDポインタ
- 12. constexpr関数内の関数ポインタ比較が許可されていますか?
- 13. ポインタのリストへのメンバー関数
- 14. メンバー関数へのポインタを持つglutDisplayFunc()
- 15. メンバー関数へのポインタ - 構文
- 16. メンバー関数delphiのポインタを取得
- 17. Python辞書キー(クラスオブジェクト)複数の比較関数との比較
- 18. PHPのソート比較関数
- 19. Pythonicの比較関数
- 20. メンバー関数への変換関数ポインタの無効化
- 21. JavaScript配列比較関数
- 22. Pythonでリストのメンバーを比較する
- 23. std :: set比較関数のカスタム引数
- 24. メンバ関数へのポインタをハッシュして比較する方法は?
- 25. 2つのカラムのR関数比較
- 26. std :: arraysのstd :: vectorの比較関数
- 27. ポインタの文字を比較する
- 28. Cの文字列比較関数
- 29. 目的関数のunichar比較
- 30. stl :: sort()内の比較関数
クラスの2つのインスタンスが異なるメンバ関数を持つのはなぜですか? –
あなたは関数+バインドを探しているかもしれないように聞こえるかもしれませんが、あなたの質問に詳細がなければ確実に言うのは難しいです。 –
実際、そうではありません。どちらも同じメンバ関数 'void foo()'を持っているので、 'a1-> foo()'と 'a2-> foo()'を行うことができます。 – baboulinet