求助,友元 重载操作符

tttt080 2011-10-07 09:09:16
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

class GT_cls{
public:
GT_cls(int val):bound(val){

}
bool operator()(const std::string& s){
return s.size()>=bound;
}
friend std::istream& operator>>(std::istream& in, std::vector<std::string>& str){
std::string s;
for(std::string::size_type ix=0;ix<10;ix++){
getline(in,s);
str.push_back(s);
}
return in;
}

private:
std::string::size_type bound;

};


int main(){

std::vector<std::string> words;
std::cin>>words;
std::cout<<count_if(words.begin(),words.end(),GT_cls(6))<<std::endl;

}
...全文
63 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
星羽 2011-10-07
  • 打赏
  • 举报
回复
你就当成是一个能访问此类的私有数据的一个普通函数就ok了
Jake443403168 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tttt080 的回复:]

这么说,友元函数的参数之一一定是对应类的引用或对象????
[/Quote]

可以在C++primer里面找找为什么要引入友元这个概念
tttt080 2011-10-07
  • 打赏
  • 举报
回复
这么说,友元函数的参数之一一定是对应类的引用或对象????
tttt080 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qq120848369 的回复:]

你这个重载operator >> 和你的类根本就没关系,作用双方是:cin 和 vector,而且你调的都是cin和vector的公有函数,直接重载在全局作用域就行了,谁的友元也不是。
[/Quote]

这么说,友元函数的参数之一一定是类的引用或对象????
Jake443403168 2011-10-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qq120848369 的回复:]

你这个重载operator >> 和你的类根本就没关系,作用双方是:cin 和 vector,而且你调的都是cin和vector的公有函数,直接重载在全局作用域就行了,谁的友元也不是。
[/Quote]

确实,感觉有点硬生生放在GT_cls的感觉
qq120848369 2011-10-07
  • 打赏
  • 举报
回复
你这个重载operator >> 和你的类根本就没关系,作用双方是:cin 和 vector,而且你调的都是cin和vector的公有函数,直接重载在全局作用域就行了,谁的友元也不是。
tttt080 2011-10-07
  • 打赏
  • 举报
回复
感觉很笨的问题,嘻嘻
tttt080 2011-10-07
  • 打赏
  • 举报
回复
C++primer 里面的题,友元函数的参数问题,第二个参数为其他类对象引用不行,而为本类对象引用
friend std::istream& operator>>(std::istream& in, std::vector<std::string>& str);
  • 打赏
  • 举报
回复
去搜 仿函数
qq120848369 2011-10-07
  • 打赏
  • 举报
回复
怎么都喜欢把友元函数当做成员函数的样子,很郁闷。
taodm 2011-10-07
  • 打赏
  • 举报
回复
啥问题啊?
楼主啊,先google下“提问的智慧”吧。
你也得珍惜下别人的时间吧。

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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