MSFT компиляторов для поддержки явного переопределения C++ (см http://msdn.microsoft.com/en-us/library/ksek8777.aspx)Явных главенствующие
// could be declared __interface I1, making the public scope and pure virtual implied
// I use the more expressive form here for clarity
class I1
{
public:
virtual void foo() = 0;
};
class I2
{
public:
virtual void foo() = 0;
};
class C : public I1, public I2
{
public:
virtual void I1::foo() { cout << "I1::foo\n"; }
virtual void I2::foo() { cout << "I2::foo\n"; }
};
int main()
{
C c;
static_cast<I1*>(&c)->foo();
static_cast<I2*>(&c)->foo();
cin.get();
}
Но НКА не нравятся. Простой «явный переопределения» онлайн-поиска дает информацию о новом ключевом слове override
. Это не обязательно связано с тем, что я ищу. Поддерживается ли эта функция каким-либо другим способом в C++ 11 (для каждой спецификации) или, по крайней мере, каким-то образом в gcc?
Примечание: приемлемым ответом может быть взлом - если он находится в том же духе вопроса, а не новый дизайн для решения другой проблемы.
, что является приемлемым, отличная идея. Неловко, когда простая идея используется для решения проблемы, я думаю, что иногда мы получаем свои головы в определенном мышлении и ожидаем найти конкретный «тип» ответа. Также +1 для ref cast vs pointer; У меня на самом деле были указатели в реальном коде - быстрое исправление в образце кода после copy + paste. Тем не менее, хорошо отметить, что у нас есть этот вариант. (к сожалению, я не могу дважды выставлять вас на защиту). – payo
@payo, Позвольте мне сделать это за вас :) – chris
@chris +1 для вас мой друг :) хе-хе – payo