c++中使用typedef 定义的结构体如何重载输出运算符

StrugglePeach 2020-05-09 03:08:09
我定义了这样一个结构体:


我在主函数中输出该结构体变量时:

Edges ele;
ele.index_begin = 10;
ele.index_end = 20;
ele.weight = 30;
std::cout << "edges " << i << " : " << edges << std::endl;


但是这样编译报错error: ‘Edges’ does not name a type,

我现在把typedef 放在结构体后面单独定义, 那么就能正常编译


这是为什么?如果就想在定义结构体的同时typedef,那么里面的重载函数应该怎么写?麻烦朋友们帮忙解释一下。
...全文
619 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
StrugglePeach 2020-05-09
  • 打赏
  • 举报
回复
引用 6 楼 sdghchj 的回复:
[quote=引用 5 楼 StrugglePeach 的回复:] [quote=引用 4 楼 sdghchj 的回复:] [quote=引用 3 楼 StrugglePeach 的回复:] 这种写法应该不行吧?我试了一下还是报错,提示Y does not name a type 如果这种可以用那就方便了
不就是你顶楼的第二种写法吗[/quote] 我第二种写法后面还是得单独typdef一下,否则还是不行的。 [/quote] 跟typedef有什么关系???如真这样,你的编译器可以丢了。[/quote] 哈哈,是我的问题,你说的对,直接struct Y{ friend std::ostream& operator<<(std::ostream&, const Y& ){} }; 然后后面就可以用Y定义变量了,多谢
sdghchj 2020-05-09
  • 打赏
  • 举报
回复
引用 5 楼 StrugglePeach 的回复:
[quote=引用 4 楼 sdghchj 的回复:] [quote=引用 3 楼 StrugglePeach 的回复:] 这种写法应该不行吧?我试了一下还是报错,提示Y does not name a type 如果这种可以用那就方便了
不就是你顶楼的第二种写法吗[/quote] 我第二种写法后面还是得单独typdef一下,否则还是不行的。 [/quote] 跟typedef有什么关系???如真这样,你的编译器可以丢了。
StrugglePeach 2020-05-09
  • 打赏
  • 举报
回复
引用 4 楼 sdghchj 的回复:
[quote=引用 3 楼 StrugglePeach 的回复:] 这种写法应该不行吧?我试了一下还是报错,提示Y does not name a type 如果这种可以用那就方便了
不就是你顶楼的第二种写法吗[/quote] 我第二种写法后面还是得单独typdef一下,否则还是不行的。
sdghchj 2020-05-09
  • 打赏
  • 举报
回复
引用 3 楼 StrugglePeach 的回复:
这种写法应该不行吧?我试了一下还是报错,提示Y does not name a type 如果这种可以用那就方便了
不就是你顶楼的第二种写法吗
StrugglePeach 2020-05-09
  • 打赏
  • 举报
回复
引用 1 楼 sdghchj 的回复:
都C++了,有必要去typedef struct X{ } Y吗? struct Y{ friend std::ostream& operator<<(std::ostream&, const Y& ){ } }
这种写法应该不行吧?我试了一下还是报错,提示Y does not name a type 如果这种可以用那就方便了
sdghchj 2020-05-09
  • 打赏
  • 举报
回复
typedef struct X{ friend std::ostream& operator<<(std::ostream&, const X& ){ //这里只能用X,因为Y还没出现。 } } Y;
sdghchj 2020-05-09
  • 打赏
  • 举报
回复
都C++了,有必要去typedef struct X{ } Y吗? struct Y{ friend std::ostream& operator<<(std::ostream&, const Y& ){ } }

65,210

社区成员

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

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