C++继承设计:避免成员重复

Tru*_*uLa 4 c++ inheritance

假设有一个C++类分别支持文件描述符上的只读和只写操作.

class ReadFd {
 public:
  ssize_t read( /* */ ) {
    // read from file_descriptor_
  }
 protected:
  int file_descriptor_;
};

class WriteFd {
 public:
  ssize_t write(/* */) {
    // write to file_descriptor_
  }
 protected:
  int file_descriptor_;
};
Run Code Online (Sandbox Code Playgroud)

现在假设有人想要定义一个ReadWriteFd支持读写操作的类.

我的问题是如何设计这样的读写类以避免代码重复?

我不能从两者继承ReadFd,WriteFd因为显然我只需要一个file_descriptor_.我遇到的真实情况有点复杂,但这里的概念反映了它相当接近.

Som*_*ude 7

添加第三个类,基于两者,ReadFd并且WriteFd其唯一目的是包含描述符变量(以及可能的其他读取和写入共同的东西).