- - PR -
C++ 演算子のオーバーロード
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-20 00:15
派生クラスで、operator=を定義するとき、親クラスのoperator=を使用したいのですが出来ますか?
class ClassA { public: int x; ClassA(); ClassA(const ClassA& ref); ClassA& operator=(const ClassA& ref); }; class ClassB : public ClassA { public: int y; ClassB(); ClassB(const ClassB& ref); ClassB& operator=(const ClassB& ref); }; ClassB::ClassB(const ClassB& ref) : ClassA(ref) { y = ref.y; } ClassB& ClassB:perator=(const ClassB& ref) { x = ref.x; // ここは親クラスの演算実装を呼びたい y = ref.y; return *this; } コピーコンストラクタでは『 : ClassA(ref)』とすればいいのは知っているのですが operator= ではどうすればいいかわかりません。 たとえば親クラスがライブラリで提供されていて実装内容がわからないとき など困ると思うのです。ご存知の方ご教授下さい。 | ||||||||||||
|
投稿日時: 2006-06-20 00:30
ClassAにキャストしてoperator=を呼ぶとか。
または
もしくは
[ メッセージ編集済み 編集者: Blue 編集日時 2006-06-20 00:33 ] | ||||||||||||
|
投稿日時: 2006-06-20 00:39
Blueさん、ありがとうございまっす!
3つとも試してどれもうまくいきました(^^ 大変勉強になりました。ありがとうございました |
1