[英]How can I implements “operator+=” in derived class?
給定以下類別:
class A {
int a;
public:
//..
};
class B : public A {
int b;
public:
//.....
};
如何在class B
實現operator+=
,以便給定B b1(.. , ..);
和B b2(.. , .. );
如果我願意做b1+=b2;
所以我將在b1
中獲得他的字段的以下值:
b1.a = b1.a + b2.a 和 b1.b = b1.b + b2.b
在以下情況下:
class A {
protected:
int a;
public:
//..
};
class B : public A {
int b;
public:
B& operator+=(const B& bb){
this->a += bb.a; // error..
this->b += bb.b;
return *this;
};
我的問題是如何獲得class A
.. class A
的字段?
給A
自己的operator+=
! 然后,您只需從B
調用它:
class A {
private:
int a;
public:
A(int a) : a(a) { }
A& operator+=(const A &other) {
a += other.a;
return *this;
}
};
class B : public A {
private:
int b;
public:
B(int a, int b) : A(a), b(b) { }
B& operator+=(const B &other) {
A::operator+=(other);
b += other.b;
return *this;
}
};
參見此處的工作示例(ideone鏈接)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.