相关疑难解决方法(0)

为什么C++不允许基类实现派生类的继承接口?

这就是我所说的

// some guy wrote this, used as a Policy with templates
struct MyWriter {
  void write(std::vector<char> const& data) {
    // ...
  }
};
Run Code Online (Sandbox Code Playgroud)

在一些现有代码中,人们不使用模板,而是使用接口+类型擦除

class IWriter {
public:
  virtual ~IWriter() {}

public:
  virtual void write(std::vector<char> const& data) = 0;
};
Run Code Online (Sandbox Code Playgroud)

其他人希望可以使用两种方法和写入

class MyOwnClass: private MyWriter, public IWriter {
  // other stuff
};
Run Code Online (Sandbox Code Playgroud)

MyOwnClass是MyWriter实现的.为什么MyOwnClass的继承成员函数不能自动实现IWriter的接口?相反,用户必须编写转发函数,除了调用基类版本之外什么都不做,如

class MyOwnClass: private MyWriter, public IWriter {
public:
  void write(std::vector<char> const& data) {
    MyWriter::write(data);
  }
};
Run Code Online (Sandbox Code Playgroud)

我知道在Java中,当你有一个实现接口的类并从一个碰巧有合适方法的类派生时,该基类会自动实现派生类的接口.

为什么C++不这样做?这似乎是一件很自然的事情.

c++ inheritance interface class

13
推荐指数
2
解决办法
1735
查看次数

标签 统计

c++ ×1

class ×1

inheritance ×1

interface ×1