如何在 C++ 中从父 class 调用函数?

How to call functions from parent class in C++?

TL;DR

我有一个 class,其中一些函数名称与父 class 的函数冲突。如何在 C++ 中从父 class 调用函数?

我的问题

我正在尝试制作具有流功能的 class。所以,我从 std::basic_iostream 继承了我的 class 。但是我的 class 有很多功能与基础 class 冲突。因此,我为流定义了一个专用的 class,并在主 class 中定义了一个函数,它将 return 流对象。我以这种方式实现了 main class 的构造函数,因此它将在创建对象时创建流对象。我的代码是这样的:

class mystream : public std::basic_iostream<char> {
    ...
};

class myclass {
    protected:
        mystream* stream;
    public:
        myclass() {
            stream = new mystream(args);
        }
        mystream& io() {
            return (*stream);
        }
};

我现在想做什么

当我使用 io 成员访问流时效果很好,但我想使用 <<>> 运算符而不调用 io 成员和任何成员函数mystreamio 成员。现在我必须像这样访问流:

myclass object;
object.io() << "Some output";
object.io().flush();

但我想通过 io 函数直接从对象和 mystream 的任何成员访问 <<>> 运算符,如下所示:

myclass object;
object << "Some output";
object.io().flush();

我试过的

我试图将它添加到我的 class,但它运行不正常,无法处理像 std::endl :

这样的 IO 操纵器
template <typename type>
std::ostream& operator << (type data) {
    return ((*stream) << data);
}
template <typename type>
std::istream& operator >> (type &data) {
    return ((*stream) >> data);
}

直接从父 class 调用函数很简单,如下所示:

std::stringstream myobj;
myobj << "Something..."
myobj.std::iostream::flush();

上面的示例直接从 std::iostream(它是 std::basic_iostream<char> 的类型定义)调用 flush()。也可以从父 class of parent class:

的成员函数
myobj.std::ostream::flush();