簡體   English   中英

C ++繼承和組合一起使用

[英]C++ Inheritance & composition used together

我有A類,有更新B屬性的方法。所以,我需要繼承。

class B{
public:
int x;
};

class A : public B{
public:
void update(int y){
x = y;
}
};

我也希望通過B級達到“更新”功能,所以我也需要合成。

class B{
public:
A a;
int x;
};

class A : public B{
public:
void update(int y){
x = y;
}
};

我希望我的結構是這樣的,所以我想以這種方式跟蹤對象的類型Bs的屬性:

...
B.a.update(5);
int n = B.x;

但是,在聲明類A之前我不能使用組合,並且在聲明類B之前不能使用繼承。我應該怎么做才能解決這個無限循環?

我不確定你到底想要實現什么,但如果我猜對了,你可能需要的是一個虛函數:

class B{
public:
int B;
virtual void update(int x){
    B = x;
}
};

class A : public B{
public:
virtual void update(int x){
    // Here goes code specific to B-class.
    B::update(x);
    // or here ;)
}
};

順便說一句,你可能不希望在public: int B字段public: section; 如果從update方法修改它的值,您可能不希望其他人嘗試直接修改它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM