共享變量這是我的計算器上的第一篇文章,所以要溫柔:)C++鑽石傳承 - 與其他非基本類
我有標準的鑽石的問題,但我會設法把它整理出來。
class Control
{
public:
bool Focused;
};
class Caption : public virtual Control
{
public:
string Text;
};
class Frame : public virtual Control { };
class Textbox : public Caption, public Frame, public TextEditor { };
遺憾的是,繼承問題出現了另一個問題。 TextEditor
類有共同的變量名:
class TextEditor
{
public:
bool Focused;
string Text;
};
編譯器給我的錯誤:
'文本'
'聚焦'
但所有我的曖昧訪問的曖昧訪問希望是來自所有類的變量在派生類「文本框」中合併。
感謝任何形式的幫助 對不起任何語言錯誤和/或問題我問。
更新
一點解釋,因爲我可能會使用錯誤的話。對不起。
通過「合併」我的意思是:
- 如果我使用的變量或
Control
,Caption
或Frame
方法也將影響TextEditor
值,反之亦然。換句話說,變量在派生類中共享。
所以我最後的類將是這樣的:
class Textbox : public Caption, public Frame, public TextEditor
{
public:
string Text;
bool Focused;
};
,而不是像這樣:
class Textbox : public Caption, public Frame, public TextEditor
{
public:
string Caption::Text;
bool Caption::Focused;
string TextEditor::Text;
bool TextEditor::Focused;
};
現在哪個發生。原因我不能這樣做:
Textbox A;
A.Text = "Text";
因爲我有兩個變量名爲Text
。所以,我必須這樣做:
Textbox A;
A.Caption::Text = "Text";
A.TextEditor::Text = "Text";
問候 拉比
請仔細閱讀http://stackoverflow.com/help/how-to-ask – Mgetz
其中的 '怎樣問' 點我違反?問題是具體的。我已經通過互聯網重新討論了這個問題還有什麼? – Lavi
[Ambiguous類繼承]的可能重複(http://stackoverflow.com/questions/12793651/ambiguous-class-inheritance) – Mgetz