这就是我所说的
// 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++不这样做?这似乎是一件很自然的事情.