- PR -

C++ 演算子のオーバーロード

1
投稿者投稿内容
ジロボット
常連さん
会議室デビュー日: 2004/02/29
投稿数: 40
投稿日時: 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= ではどうすればいいかわかりません。

たとえば親クラスがライブラリで提供されていて実装内容がわからないとき
など困ると思うのです。ご存知の方ご教授下さい。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-06-20 00:30
ClassAにキャストしてoperator=を呼ぶとか。
コード:


*( ( ClassA* )this ) = ref;


または
コード:


( ( ClassA* )this )->operator =( ref );


もしくは
コード:


ClassA::operator =( ref );



[ メッセージ編集済み 編集者: Blue 編集日時 2006-06-20 00:33 ]
ジロボット
常連さん
会議室デビュー日: 2004/02/29
投稿数: 40
投稿日時: 2006-06-20 00:39
Blueさん、ありがとうございまっす!

3つとも試してどれもうまくいきました(^^

大変勉強になりました。ありがとうございました
1

スキルアップ/キャリアアップ(JOB@IT)