Здравствуйте, 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); // опаньки
}