Здравствуйте, night beast, Вы писали:
NB>...
Тут да, неоднозначность получается. Тогда действительно можно указать
virtual, показав, что мне всё равно что компилятор будет звать:
#include <iostream>
#include <memory>
struct base
{
virtual void base_method() = 0;
};
struct a_interface : virtual base
{
virtual void a_method() = 0;
};
struct b_interface : virtual base
{
virtual void b_method() = 0;
};
struct с_interface : a_interface, b_interface
{
virtual void c_method() = 0;
};
struct object : с_interface
{
void base_method() override
{
std::cout << "base_method" << std::endl;
}
void a_method() override
{
std::cout << "a_method" << std::endl;
}
void b_method() override
{
std::cout << "b_method" << std::endl;
}
void c_method() override
{
std::cout << "c_method" << std::endl;
}
};
int main()
{
object obj;
auto& c = static_cast<с_interface&>(obj);
c.base_method();
c.a_method();
c.b_method();
c.c_method();
}
Только не понятно, что изменится в самом классе в таком случае, кроме подавления ошибки компилятора, при обращении к такому методу. Интересно...