如果我有以下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中?
答案 0 :(得分:3)
我认为你的意思是将这些返回值引用而不是值。如果是这种情况,您可以让基类中的getStream
返回ios&
,然后您可以让特定函数返回fstream&
,ifstream&
和{{1}因为它们与ofstream&
:
ios&