作者Lipraxde (静夜)
看板C_and_CPP
标题[问题] friend function定义在class里
时间Wed Feb 13 14:55:05 2019
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
clang、gcc
问题(Question):
有 class A、class B、function foo
B 是 A 的 friend
foo 是 B 的 friend
把 foo 的定义写在 class B 里面
用 clang 编译可以在 foo 里面存取 A 的私有成员,gcc 则不行
B 的 member function bar 可以存取 A 的私有成员,是因为 bar 属於 B
B 的 friend function 不属於 B,不过定义写在 B 里面,那是属於 B 还是不属於 B?
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
https://gcc.godbolt.org/z/9aNGEX
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.113.210.55
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1550040915.A.F19.html
1F:→ uranusjr: 定义在 B 里只会让 foo inline, 不会让 foo 属於 B 02/13 15:25
2F:→ uranusjr: 感觉是 Clang 的 bug...? 02/13 15:25
3F:→ notBeing: 不属於 02/13 15:26
刚刚找了找 bugs.llvm.org,发现跟 Bug 11515应该是同一类型的,看来的确是 clang
的 bug
https://bugs.llvm.org/show_bug.cgi?id=11515
※ 编辑: Lipraxde (140.113.56.71), 02/13/2019 20:37:46