C++for_each函数的使用

shnaying1945 2012-10-28 12:37:24
一个简单的复数类
class Complex{
int rec;
int vir;
public:
Complex(int r=0,int v=0){
rec=r;vir=v;
}
friend ostream&operator<<(ostream &os,const Complex&com);
friend class ComplexAdd;
};

ostream&operator<<(ostream&os,const Complex&com){
os<<"("<<com.rec<<","<<com.vir<<")"<<endl;
return os;
}
类实现复数的加
class ComplexAdd{
Complex com;
public:
ComplexAdd(int a,int b){
com.rec+=a;com.vir+=b;
}
};
以下是主函数里的
Complex A[] = { Complex(1, 2), Complex(3, 4), Complex(5, 6), Complex(7, 8), Complex(9, 10)};
vector<Complex> aa(A, A + 5);
for_each(aa.begin(), aa.end(), ComplexAdd(2,3));
for_each(A, A+10, ComplexAdd(5,6));
vector<Complex>::iterator p;
for ( p = aa.begin(); p != aa.end(); p++)
cout << *p;
cout << endl;
int i;
for (i = 0; i < 5; i++)
cout << A[i];

界面上已经显示语法无误。
但是编译的时候显示错误:项不会计算为接受1个参数的函数
错误指向for_each函数的源代码
template<class _InIt,class _Fn1>
inline _Fn1 _For_each(_InIt _First, _InIt _Last, _Fn1 _Func)
{ // perform function for each element
for (; _First != _Last; ++_First)
_Func(*_First);
return (_Func);
}

这什么情况?
...全文
1966 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shnaying1945 2012-11-02
  • 打赏
  • 举报
回复
话说重载()运算符是关键。
swordtan 2012-11-02
  • 打赏
  • 举报
回复
你的ComplexAdd实现存在问题,你可以参考一下你之前发的帖,3楼
http://topic.csdn.net/u/20121028/23/7fc36590-07f2-406f-b8e5-50b24249ab07.html
ccc43542876 2012-11-02
  • 打赏
  • 举报
回复
总觉得你的for_each的第三个参数,函数指针那块有问题。。
shnaying1945 2012-10-28
  • 打赏
  • 举报
回复
除了main函数的return和system("pause")及括号,都有了
JiMoKuangXiangQu 2012-10-28
  • 打赏
  • 举报
回复
代码可不可以贴完整点?

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧