Re[6]: Именование чистых интерфейсов
От: night beast СССР  
Дата: 04.05.23 14:16
Оценка:
Здравствуйте, Videoman, Вы писали:

NB>>так даимонд проблема не связана с тем, абстрактный интерфейс или нет.

NB>>у тебя один интерфейс наследует два других с общей базой -- вот уже и конфликт.

V>А мне кажется связана. Виртуальное наследование это же про данные. Нет данных — нет виртуальной базы. Чистым интерфейсам не только виртуальное наследование не нужно, но и таблица виртуальных функций — всё хранится в классе.


V>Какая разница через какой интерфейс вызов, если данные всё равно расшарены


ты не работаешь напрямую с объектами, ты работаешь с интерфейсами:
struct IBase {
  virtual ~IBase() {}
};

struct IA : IBase {
};

struct IB : IBase {
};

struct IC : IA, IB {
};


int main()
{
    IC * c = new IC();
    IBase* x = static_cast<IBase*>(c); // опаньки
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.