Это мой первый пост в stackoverflow, так что будьте осторожны :)
У меня стандартная проблема с бриллиантами, но мне удалось с ней разобраться.
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»
Но все, что я хочу, это объединить эти переменные из всех классов в производном классе Textbox.
Спасибо за любую помощь. Извините за языковые ошибки и/или вопрос, который я задаю.
Обновить
Небольшое объяснение, потому что я мог использовать неправильные слова. Простите за это.
Под «слиянием» я имел в виду, что:
- Если я использую переменные или методы
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";
С уважением Лави Полезно Бесполезно
Text
в методеTextbox
, какой из них должен использовать компилятор? Они не могут быть просто объединены, так какTextEditor::Text
используется для чего-то другого, чемCaption::Text
. Если бы вы объединили эти переменные, методыCaption
могли бы повлиять на значениеTextEditor::Text
- person Alexander Weinert   schedule 15.07.2013Caption
повлияют на значенияTextEditor
. - person Lavi   schedule 15.07.2013