如何在c++ Builder中解决接口方法和基类方法名称冲突?

How can I resolve interface method and base class method name conflict in C++ Builder?

本文关键字:类方法 基类 冲突 方法 接口 c++ Builder 解决      更新时间:2023-10-16

我有以下抽象基类SettingsInterface,我将其用作接口:

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::Update()与基类'TWinControl'冲突。我被这事难倒了。我如何解决这个问题,而不改变我的接口的方法定义,更新,到别的东西?

编辑-后续:

所以c++没有一个类似于c#的结构,你可以显式地实现具有相同定义的接口方法?

谢谢!

试试这样做(从代码中我不能确切地说):

DebugSettingsFrame:: TFrame::更新();

::是作用域解析操作符。您应该能够精确地指定您正在调用的函数的哪个版本。

但是,请注意,这是设计可能变得过于复杂的征兆。