为什么我自己的输出流类不起作用
Why does my own output stream class not work?
可能重复:
std::endl在重载运算符<时为未知类型<
#include <iostream>
using namespace std;
struct OutputStream
{
template<class T>
OutputStream& operator <<(const T& obj)
{
cout << obj;
return *this;
}
};
OutputStream os;
int main()
{
os << 3.14159 << endl; // Compilation Failure!
}
VC++2012编译器抱怨:
错误C2676:二进制'<lt;':'OutputStream"未定义此运算符或转换为预定义运算符可接受的类型
原因是编译器无法推导出T
的类型,因为std::endl
是定义为的函数模板
template <class charT, class traits>
basic_ostream<charT,traits>& endl ( basic_ostream<charT,traits>& os );
在IOStreams中克服它的方法是提供适当的operator<<
:过载
OutputStream& operator <<(std::ostream& ( *pf )(std::ostream&))
{
cout << pf;
return *this;
}
相关文章:
- 为什么我的 if else 语句不起作用并从数组中输出正确的索引?
- Opengl 4 调试输出不起作用
- bcdedit 文件输出不起作用,但其他命令可以
- 在C++中实现二叉搜索树,搜索不起作用.尝试打印节点的元素会导致输出崩溃
- 类中的重载函数(Students())是输出输入的信息,但它不起作用
- 来自外部TXT文件的C 排行榜输出不起作用
- 如果流不起作用
- C++流输出不起作用
- C++输出流到文件不起作用
- 获得程序输出(无错误),但程序.exe在使用 graphics.h 时不起作用
- C 字符串流ignore()不起作用
- Rapidjson 输出到字符串不起作用
- 流:运行索引不起作用
- FFmpeg + OpenAL - 播放视频中的流声音不起作用
- 流到缓冲区工作,文件到缓冲区不起作用
- 如果流和流在崩溃后不起作用
- 流和字符串流不起作用
- 函数 system() 中的输出重定向似乎不起作用
- 为什么我的输出流seg出错,而我的虚拟析构函数不起作用,但当我杀死虚拟的时候,它起作用了
- 为什么我自己的输出流类不起作用