繁体   English   中英

'运算符<<(std :: ostream&,int&)'不明确

[英]'operator<<(std::ostream&, int&)’ is ambiguous

这不是吗?

operator<<(std::cout, 0);

一样吗

std::cout<<0;

我尝试了这段代码:

#include<iostream>
int main()
{
    operator<<(std::cout,0);
    return 0;
}

但是我收到以下错误消息:

a.cpp: In function ‘int main()’:
a.cpp:11:28: error: call of overloaded ‘operator<<(std::ostream&, int)’ is ambiguous
a.cpp:11:28: note: candidates are:
/usr/include/c++/4.6/ostream:528:5: note: std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const unsigned char*) [with _Traits = std::char_traits<char>]
/usr/include/c++/4.6/ostream:523:5: note: std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const signed char*) [with _Traits = std::char_traits<char>]
/usr/include/c++/4.6/ostream:510:5: note: std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const char*) [with _Traits = std::char_traits<char>]
/usr/include/c++/4.6/bits/ostream.tcc:323:5: note: std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.6/ostream:473:5: note: std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, unsigned char) [with _Traits = std::char_traits<char>]
/usr/include/c++/4.6/ostream:468:5: note: std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, signed char) [with _Traits = std::char_traits<char>]
/usr/include/c++/4.6/ostream:462:5: note: std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, char) [with _Traits = std::char_traits<char>]
/usr/include/c++/4.6/ostream:456:5: note: std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, char) [with _CharT = char, _Traits = std::char_traits<char>]

有人可以解释吗?

不,与以下内容相同:

std::cout.operator<<(0);

使用operator<<(std::cout, 0); 进行依赖参数的查找 (ADL),该查找找到接受std::basic_ostream<char>和一个int (或具有从int进行有效的隐式转换的类型)作为输入的多个候选。 一旦启用ADL,所有这些重载都将成为有效的候选者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM