C ++用のmsftコンパイラは、明示的なオーバーライドをサポートしています(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();
}
しかし、gccはこれが好きではありません。単純な「明示的なオーバーライド」オンライン検索により、新しいキーワードに関する情報が得られますoverride
。それは必ずしも私が探しているものとは関係ありません。この機能は、c ++ 11(仕様ごと)で他の方法でサポートされていますか、それとも少なくともgccで何らかの方法でサポートされていますか?
注:受け入れ可能な答えはハックである可能性があります-それが質問の同じ精神にあり、別の問題を解決するための新しい設計ではない限り。