2
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中支持?
注意:一個可以接受的答案可能是一個破解 - 只要它與問題的精神相同,而不是解決不同問題的新設計。
是可以接受的,偉大的想法。當一個簡單的概念被用來解決問題時,我覺得有些尷尬,我想有時候我們會以一定的思維方式讓自己的頭腦發現,並希望找到一個特定的「類型」答案。對於ref cast vs指針也是+1;我實際上已經有了實際代碼中的指針 - 在複製+粘貼後快速修復示例代碼。儘管如此,很好的指出我們有這個選擇。 (可惜我無法讓你兩次讚不絕口)。 – payo 2012-04-26 19:30:29
@payo,讓我爲你做:) – chris 2012-04-26 19:31:40
@chris +1對你我的朋友:)呵呵 – payo 2012-04-26 19:33:51