使用不同的返回类型抽象成员函数

时间:2011-12-18 23:12:19

标签: c++ inheritance

如果我有以下C ++类:

class FileIOBase
{
  //regular file operations
  //
  //virtual fstream / ifstream / ofstream getStream();  ???
  //
  bool open(const std::string &path);
  bool isOpen() const;
  void close();
  ...
};

class InputFile : FileIOBase
{
  size_t read(...);
  ifstream getStream();
};

class OutputFile : FileIOBase
{
  size_t write(...);
  ofstream getStream();
};

class InputOutputFile : virtual InputFile, virtual OutputFile
{
  fstream getStream();
};

这些类只封装了标准输入,输出,输入/输出文件流及其操作。

有没有办法让getStream()成为接口的一部分并将其移动到FileIOBase中?

1 个答案:

答案 0 :(得分:3)

我认为你的意思是将这些返回值引用而不是值。如果是这种情况,您可以让基类中的getStream返回ios&,然后您可以让特定函数返回fstream&ifstream&和{{1}因为它们与ofstream&

协变
ios&