求助一个关于C++ 隐藏 的问题

rovoboy rovoboy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
直接说应用环境吧,我打算在C++的strstream类上继承一个自己的logstream类,但是要修改endl操作子的行为以及自己增加几个操作子。
直接从ostream类的文件中拷贝endl函数过来,把参数类型改成logstream之后,发现系统不会去调用这个endl操作子,然后我重载了 logstream::operator << (endl函数指针),结果endl操作子的行为是正确了,但是重载的operator << 因为隐藏了基类里面的operator << 操作符,结果所有其他的 << 操作符统统不能用了。。。。
解决方法是有的,就是在logstream类中把所有要用到的 << 操作符统统写一遍,然后直接调用基类的对应参数类型的操作,中间还要经过强制类型转换。。。
我希望有比较优雅的方法,于是使用using basic_stream::operator<<;来尝试不隐藏所有的<<操作符,结果和预期不太一样,基类中的那些<<操作符确实没隐藏了,但是我自己写的logstream::operator << (endl函数指针);这个函数也同时失效了,这个我一直没有想到原因和解决方法。

另外,如何增加一个操作子 比如我要增加endl2操作子,直接根据endl函数的形式,改了个名字,结果编译倒是能通过,但 <<操作符调用的不是logstream::operator << (函数指针) 而是logstream::operator << (const void*) 这个函数了
...全文

相关推荐

评论 7
收藏 已收藏
分享
返回顶部
rovoboy
C++ 语言 65,214 成员 250,514 内容