0
我有以下的抽象基類,SettingsInterface,我作爲一個接口使用:如何解決C++ Builder中的接口方法和基類方法名稱衝突問題?
class SettingsInterface
{
public:
virtual void Refresh() = 0;
virtual void Update() = 0;
virtual void OnConnect() = 0;
virtual void OnDisconnect() = 0;
};
我想實現我下面的類,它繼承TFRAME這個接口。 TFrame從另一個類中繼承,該類也有一個名爲Update的虛擬方法。
class DebugSettingsFrame : public TFrame, public SettingsInterface
{
//a bunch of IDE-managed components - left out for brevity
public:
virtual void Refresh();
virtual void Update();
virtual void OnConnect();
virtual void OnDisconnect();
};
當我編譯,我得到了錯誤虛函數DebugSettingsFrame ::更新()與基類TWinControl'的衝突。 我跺腳了。我怎樣才能解決這個問題,而不需要將我的接口的方法定義Update更改爲其他東西?
編輯 - 後續:
所以C++沒有類似於C#中的構造物,其中可以明確實現具有相同的定義接口的方法呢?
謝謝!
真的嗎? C++規範是否改變了?我曾經教C++,我的例子之一是如何處理從兩個類繼承的乘法,其中每個類都有一個具有相同名稱的變量。解決這個問題的唯一方法是範圍解析運算符。 – 2011-04-14 13:41:05
你對此沒有錯,但在這種情況下,問題在於他的'Update'版本是純虛函數。這會與'TFrame :: Update'衝突,這不是純粹的。將編輯我的答案來澄清這一點。 – 2011-04-14 14:38:19