C++重载输出操作符<<遇到的问题

查看:328
本文介绍了C++重载输出操作符<<遇到的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

std::ostream& operator<<(std::ostream& os, const Token& token){
    os << 1;
    return os;
}

报错信息是这样的 :

/Users/zhangzhimin/ClionProjects/Fred/Font/Lexer/Token.cpp:33:8: error: invalid operands to binary expression ('std::ostream' (aka 'basic_ostream<char>') and 'int')
    os << 1;
    ~~ ^  ~
/Users/zhangzhimin/ClionProjects/Fred/Font/Lexer/Token.cpp:32:15: note: candidate function not viable: no known conversion from 'int' to 'const Token' for 2nd argument
std::ostream& operator<<(std::ostream& os, const Token& token){
              ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:5382:1: note: candidate template ignored: could not match 'shared_ptr<type-parameter-0-2>' against 'int'
operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:4151:1: note: candidate template ignored: could not match 'basic_string<type-parameter-0-0, type-parameter-0-1, type-parameter-0-2>' against 'int'
operator<<(basic_ostream<_CharT, _Traits>& __os,
^
1 error generated.
make[2]: *** [CMakeFiles/Fred.dir/Font/Lexer/Token.cpp.o] Error 1
make[1]: *** [CMakeFiles/Fred.dir/all] Error 2
make: *** [all] Error 2

解决方案

看不到你其他代码不能全面的了解情况,从仅有的片段来看是由重载了全局<<运算符导致的错误。

这篇关于C++重载输出操作符&lt;&lt;遇到的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆