Re[5]: Множественное наследование интерфейсов
От: Максим Рогожин Россия  
Дата: 13.06.18 18:08
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>У класса может быть только один деструктор!


Спасибо! А вот так можно делать?

class Interface1 {
public:
   virtual ~Interface1() {}         // vtbl[0]
   virtual void doSomething() = 0;  // vtbl[1] Такой же как и в Interface2, но на первой позиции в vtbl
   virtual void doSomething1() = 0; // vtbl[2]
   
};

class Interface2 {
public:
   virtual ~Interface2() {}          // vtbl[0]
   virtual void doSomething2() = 0;  // vtbl[1]
   virtual void doSomething() = 0;   // vtbl[2] Такой же как и в Interface1, но на второй позиции в vtbl
};

class SomeClass : public Interface1,
                  public Interface2
{
public:
   ~SomeClass();                      // vtbl[0]
   void doSomething1() override;      // vtbl[1]
   void doSomething2() override;      // vtbl[2]
   void doSomething() override;       // vtbl[3]
   //...
};

std::unique_ptr<Interface1> obj1(new SomeClass());
std::unique_ptr<Interface2> obj2(new SomeClass());

obj1->doSomething();
obj2->doSomething();


Тут все то же самое что и с деструкторами? Метод doSomething() можно вызывать через любой интерфейс? Не зависимо от того на каком месте он в интерфейсах объявлен?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.