1
1
很难说哪一个是对的,因为没有名字
编辑 :这似乎是MSVC中的一个错误,因为以下代码(完全有效)无法编译。
您可以通过在类外部定义函数来解决这个问题。
您甚至可以通过在类内声明函数来保留友元状态(但仍然在类外定义函数),但我怀疑您是否需要在联合中使用它。
注意我去掉了不必要的
|
2
0
下面的代码在VisualC++ 2008中正确编译:
虽然msdn文档声明在类中编写friend函数的定义实际上将该函数放在了文件范围内,但这似乎对联合不起作用。因为它适用于类和结构,所以我怀疑这可能是一个bug。由于我上面给出的实现应该在gcc上工作,我认为它可以被认为是一个合适的解决方法,并且这个bug很可能不会在msvc中修复。 |
3
0
您需要在封闭范围内声明这些友元函数,因为一旦您在类内声明它们,它们在外部范围内就不再可见。因此,要么像avakar所说的那样将函数体移出类,要么将它们保留在类中,并添加以下行,以便将名称重新引入封闭范围:
希望这有帮助。不确定是否是bug,但它出现了(?)对我来说,正确的行为,现在得到了正确的实现,这是许多编译器以前用不同的方式解释的。参见:--fffriend injection in http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html . |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |