Объектно-ориентированное программирование на языке С++. Лясин Д.Н - 63 стр.

UptoLike

Составители: 

63
}
Попытка доступа к члену данных x для объекта с приводит к ошибке
транслятора “Member is ambiguous A::x and A::x”. Эта ошибка означает, что
транслятор не может определить, какому из двух компонент x класса необходимо
присвоить новое значение. Неразрешимыми именами для транслятора будут
также следующие с.C::x и c.A::x. Решением проблемы является использование
квалифицированных имен компонент с использованием имен классов B
и D. Для
транслятора однозначно различаются следующие имена компонент: с.B::x
(компонента, унаследованная через класс В) и c.D::x (компонента, унаследованная
через класс D).
Рассмотрим пример программы, реализующей множественное
наследование. В программе реализованы класс Window, описывающий окно в
текстовом режиме, и класс Text, описывающий буфер для хранения текстовой
информации, а на их основе определен
класс WinText, описывающий окно в
текстовом режиме с возможностью отображения в нем текста.
//Листинг 27. Программа, использующая множественное наследование классов
#include<stdio.h>
#include<string.h>
#include <conio.h>
class Window //класс «окно в текстовом режиме»
{ protected:
int x,y; //координаты левого верхнего угла окна
int dx,dy; //размеры окна
int color,backcolor; //основной и фоновый цвета окна
public:
Window(int xb=10, int yb=10, int a=60,int b=20) //конструктор
{ x=xb;y=yb;dx=a;dy=b;
backcolor=1;color=15;}
void draw(); //функция изображения окна на экране
};
void Window::draw()
{ textbackground(backcolor);
for(int i=x;i<x+dx;i++)
for (int j=y;j<y+dy;j++)
{
gotoxy(i,j);
cprintf(" ");
}}
       }
       Попытка доступа к члену данных x для объекта с приводит к ошибке
транслятора “Member is ambiguous A::x and A::x”. Эта ошибка означает, что
транслятор не может определить, какому из двух компонент x класса необходимо
присвоить новое значение. Неразрешимыми именами для транслятора будут
также следующие с.C::x и c.A::x. Решением проблемы является использование
квалифицированных имен компонент с использованием имен классов B и D. Для
транслятора однозначно различаются следующие имена компонент: с.B::x
(компонента, унаследованная через класс В) и c.D::x (компонента, унаследованная
через класс D).
       Рассмотрим        пример      программы,        реализующей        множественное
наследование. В программе реализованы класс Window, описывающий окно в
текстовом режиме, и класс Text, описывающий буфер для хранения текстовой
информации, а на их основе определен класс WinText, описывающий окно в
текстовом режиме с возможностью отображения в нем текста.
//Листинг 27. Программа, использующая множественное наследование классов
#include
#include
#include 
class Window                    //класс «окно в текстовом режиме»
{ protected:
   int x,y;                    //координаты левого верхнего угла окна
   int dx,dy;                  //размеры окна
   int color,backcolor;        //основной и фоновый цвета окна
  public:
   Window(int xb=10, int yb=10, int a=60,int b=20) //конструктор
    { x=xb;y=yb;dx=a;dy=b;
     backcolor=1;color=15;}
   void draw();                        //функция изображения окна на экране
};
void Window::draw()
    { textbackground(backcolor);
      for(int i=x;i