- C++相談室 part113
296 :デフォルトの名無しさん[sage]:2014/06/27(金) 16:14:46.16 ID:fQovSiOU - 基底クラスでイコール演算子をダイナミックキャストなしで
ヴィジターパターンを使って実装する方法見つけたんだけど 教えてほしい?
|
- C++相談室 part113
298 :デフォルトの名無しさん[sage]:2014/06/27(金) 16:56:13.37 ID:fQovSiOU - では教えよう。
class B{ public: virtual bool equal(B * b); virtual bool f(D * d); }; class D:public B{ public: bool equal(B * b){ b->f(this); } bool f(D * d){ //ここでdとthisを比べる。 } }; 基底クラスでfを定義するのが汚いけどdynamic_castするよりは早いと思う。 ちなみに基底クラスで派生クラスのコピーを作るときはcloneメソッドを実装するといい。
|
- C++相談室 part113
299 :デフォルトの名無しさん[sage]:2014/06/27(金) 16:58:06.34 ID:fQovSiOU - では教えよう。
class B{ public: virtual bool equal(B * b); virtual bool f(D * d); }; class D:public B{ public: bool equal(B * b){ return b->f(this); } bool f(D * d){ //ここでdとthisを比べる。 return a; } }; 基底クラスでfを定義するのが汚いけどdynamic_castするよりは早いと思う。 ちなみに基底クラスで派生クラスのコピーを作るときはcloneメソッドを実装するといい。
|