首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >错误: os << ((const Args*)a)->Args::getArgL()中的operator<<不匹配

错误: os << ((const Args*)a)->Args::getArgL()中的operator<<不匹配
EN

Stack Overflow用户
提问于 2013-06-27 07:31:50
回答 1查看 441关注 0票数 0

我正面临着下面的错误,我不明白如果argsMap上的操作员<<有朋友可以使用,为什么它还在抄袭?有人能帮帮忙吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Args.C: In function âstd::ostream& operator<<(std::ostream&, const Args&)â:
Args.C:166: error: no match for âoperator<<â in âos << ((const Args*)a)->Args::getArgL()â
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:108: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>& (*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:117: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ios<_CharT, _Traits>& (*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:127: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:165: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:169: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:173: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream.tcc:91: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:180: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream.tcc:105: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:191: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:200: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:204: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:209: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:213: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:221: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream:225: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream.tcc:119: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>]
Args.C:165: note:                 std::ostream& operator<<(std::ostream&, const Args&)
../../../../src/hp/lib/libcfa/Args.h:79: note:                 std::ostream& operator<<(std::ostream&, const ArgItem&)

下面是在.h和.cpp文件中拆分的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
typedef map<string,ArgItem,std::less<string>, std::allocator<string> >  argsMap;

class Args {
 const  argsMap &getArgL(void) const { return lArgItems ;  }
 friend ostream& operator<< ( ostream &os, const argsMap& am );
  friend ostream& operator<< ( ostream &os, const Args& a );

};

  ostream& operator<< ( std::ostream &os, const Args& a ){
         os<<a.getArgL();
         return os;
  }
  ostream& operator<< ( std::ostream &os, const argsMap& am ){
         for ( argIter2 i=am.begin() ; i != am.end() ; i++){
            os<<"-"<< (*i).first <<" " << (*i).second <<"\n";
         }
         return os;
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-27 07:36:37

尝试将ostream& operator<< ( std::ostream &os, const argsMap& am )的转发声明放在ostream& operator<< ( std::ostream &os, const Args& a )之上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  ostream& operator<< ( std::ostream &os, const argsMap& am );
  // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ THIS

   ostream& operator<< ( std::ostream &os, const Args& a ){
         os<<a.getArgL();
         return os;
  }

  ostream& operator<< ( std::ostream &os, const argsMap& am ){
         for ( argIter2 i=am.begin() ; i != am.end() ; i++){
            os<<"-"<< (*i).first <<" " << (*i).second <<"\n";
         }
         return os;
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17337224

复制
相关文章
Python中*args和**kwargs
在python开发的过程中,经常会遇到了*args和**kwargs这两个魔法变量,那么它们是什么呢?
SEian.G
2021/07/07
1.1K0
解决SystemExit: 2,args = parser.parse_args() 的问题,
报错原因: argparse 是一个旨在解析从命令行传递的参数的模块,您可以使用 argparse 来编译 参数内容。如果 argparse 认为参数无效,则退出,这通常在 python 中通过调用 sys.exit() 来完成,这会引发 SystemExit 错误,这就是您所看到的。 所以问题是你试图从交互式解释器(看起来像 ipython)中使用 argparse,此时程序已经启动,所以应该已经解析了 args。
汀丶人工智能
2022/12/21
1.8K0
python中的*args和**kwar
python支持可变参数:可以使用*args、**kwargs实现 *args是可变的positional arguments列表,是一个tuple。 **kwargs是可变的keyword arguments列表,是一个dict。 *args必须位于 **kwargs之前,因为positional arguments必须位于keyword arguments之前。 *args、**kwargs的使用: 函数定义:是一个将参数pack的过程 函数调用:将参数unpack 例子: def foo(*args,
py3study
2020/01/16
6540
Python函数中的*、*args、**kwargs
当函数需要的参数数量不确定的时候,可以使用args 和 kwargs , 所有的位置参数保存在args中,以元组的形式保存,调用时直接用args,不需要带 * 所有的关键参数保存在kwargs中,以字典的形式保存,调用时也直接使用kwargs
神秘的寇先森
2020/02/19
9570
Spring-AOP @AspectJ切点函数之args()和@args()
虽然args()允许在类名后使用“+”通配符,但该通配符在此处没有意义,添加和不添加的效果都一样。
小小工匠
2021/08/17
1.1K0
Python中 *args 和 **kwargs 的含义?
答:在python中,*args和**kwargs通常使用在函数定义里。*args 和 **kwargs 都允许你给函数传不定数量的参数,即使在定义函数的时候不知道调用者会传递几个参数。ps: *args和**kwargs只是一个大家都遵守的习惯,名字可以任意写的 。
用户1564362
2019/11/12
1.2K0
*args 和 **kwargs的用法
一 简介 *args 和 **kwargs 主要用于函数定义。 当我们需要定义的函数的传入参数个数不确定时,可以使用*args 和 **kwargs 代替不确定的参数个数。其实并不是必须写成*args 和**kwargs。 只有变量前面的 *(星号)才是必须的. 我们可以写成*var和**vars. 而写成*args 和**kwargs只是一个通俗的命名约定。 二 使用 2.1 *args 当函数的参数个数不确定且不需要指定参数名称时,*args的格式是常规的参数 val1[,val2,val3....]
用户1278550
2018/08/09
4790
python中*args和**kwargs的区别
*args是函数使用者可以发送任意数量非键值对的参数传给这个函数,*args在接收参数后,将返回值以元组tuple的形式返回。
用户7886150
2020/12/19
4690
Python中 *args 和 **kwargs 的含义?
小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。
程序员小猿
2021/01/19
7450
Python中 *args 和 **kwargs的用法
总是会在一些代码中看到*args和**kwargs,一直不知道具体怎么用,今天整理了一下:
BigYoung小站
2020/07/02
5920
python: *args & **kwargs
Python是支持 可变参数 的,实现手段之一就是使用 *args 和 **kwargs 语法。
JNingWei
2018/09/28
9810
*args和**kwargs
*args 和**kwargs常用于方法定义,*args 和**kwargs允许你传递可变数量的参数到函数里,可变数量在这里的意思是,你事先不知道有多少个参数可以传递给你的函数,所以在这种情况下,你使用这两个关键字。*args 用于传递一个non-keyword的参数list给函数,看示例
Helloted
2022/06/07
2770
什么是*args和**kwargs?
可以看到,这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: positional argument follows keyword argument”。
狼啸风云
2020/05/14
1.3K0
python中的参数传递*args与**kwargs
*args与**kwargs可以将任意数目的参数传递给函数,主要用在函数定义中,最常见的是在装饰器中使用。
生信编程日常
2020/05/26
1.8K0
[C语言] #、##、__VA_ARGS__的使用
从网上借鉴了一些内容,然后整理了一下三者的区别,记录一下。 #include <iostream> // #: 用来把参数转换成字符串 #define LOG1(x) do { printf("%s=%d\n",#x,x); }while(0) // ##:用于将带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串;但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元; #define LOG2(x) log##x() // __VA_ARGS_
轻舞飞扬SR
2021/03/15
1.1K0
python *args,**kwargs参数
实际上,关键的是*和** 我们以三个例子来解释: 普通的使用参数: def test1(arg): print(arg) test1("a") 输出: a *是将剩下的参数用元祖表示 def test1(arg1,arg2,*args): print(arg1) print(arg2) print(args) test1(1,2,3,"a","b") 输出: 1 2 (3, 'a', 'b') **是将参数转换成字典进行表示 def test2(**kwargs):
西西嘛呦
2020/08/26
5060
[Go] 获取Go二进制文件的真正执行路径os.Args
os.Args是个[]string 里面存着路径和全部参数 直接拼接一下就获取到完整路径了 func GetAllExecutePath()string{ allPath:="" f
唯一Chat
2021/04/26
8420
[Go] 获取Go二进制文件的真正执行路径os.Args
python函数——形参中的:*args和**kwargs
多个实参,放到一个元组里面,以*开头,可以传多个参数;**是形参中按照关键字传值把多余的传值以字典的方式呈现
菲宇
2019/06/13
1.1K0
Python 拓展之 *args & **kwargs
我们在前几天的文章中写的函数,它们的参数的个数都是确定的,我们知道世界是不确定的,那么函数的参数当然也有不固定的时候,那么当我们碰到这个问题的时候,该怎么解决呢?请看接下来的文章。
编程文青李狗蛋
2019/11/07
5050
点击加载更多

相似问题

const funcName = (args) => {}和const funcName = (args) => ( );?

33

char* const args[]定义

21

调用请求(const char *args)的函数

20

错误:不匹配operator<<中的std::operator<< <std::char_traits<char> >(*&std::cout),((const *)

13

错误:与‘boost::operator+系统::path::filename() const() +“/”“中的’‘不匹配

15
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文