Это мой первый пост на StackOverflow так нежна :)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;
};
Компилятор дает мне ошибки:
неоднозначное доступа 'Текст'
неоднозначной доступа 'Focused'
Но все, что я want - это те переменные из всех классов, которые должны быть объединены в производном классе «Текстовое поле».
Спасибо за любую помощь Sorry для любых языков ошибок и/или вопрос, который я задаю.
Update
Небольшое пояснение, потому что я, возможно, использование неправильных слов. Простите за это.
Под «слиянием» я имел в виду, что:
- Если я использую переменные или методы
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
Возможный дубликат [Незначительное классовое наследование] (http://stackoverflow.com/questions/12793651/ambiguous-class-inheritance) – Mgetz