никают проблемы. Во-первых, де

Автор admin Среда, 17 июня 2009 11:32

никают проблемы. Во-первых, деструктор базового класса не является виртуальным1. Во-вторых, функция f() тоже не является виртуальной; видимо, разработчик библиотеки решил, что это не обязательно. В-третьих, в интерфейсе базового класса отсутствует функция, абсолютно необходимая для решения вашей задачи. Также предположим, что вы уже написали довольно-таки объемистый код с использованием существующего интерфейса (не говоря уже о неподконтрольных вам функциях А() и В()), и изменять его не хочется. Чтобы выйти из положения, создайте собственный интерфейс класса и новый набор производных классов от вашего интерфейса и существующих классов: //: C09:Paste.cpp //{L} Vendor // Решение проблемы с использованием // множественного наследования linclude finclude “Vendor.h” using namespace std; class MyBase { // Исправление интерфейса Vendor public: virtual void v() const = 0: virtual void f() const = 0: // Новая интерфейсная функция: virtual void g() const = 0; virtual -MyBaseO { cout « “~MyBase()\n”; } }: class Pastel : public MyBase. public Vendorl { public: void v() const { cout « “Pastel::v()” « endl


Комментарии закрыты.