这种类型的转换在c++中不允许,但可以允许为一种扩充方式。下面的例子解释了这种语言规则是怎样被违反的。
例子中对Struct C& 和 Struct C的类型转换提出了警告

解决方案 »

  1.   

    一般来说,结构中的第一个成员的地址就是结构的地址,所以例子中C()的地址其实可以看作是结构C的地址,但这种转换在标准的C++规范中是不允许的,但VC++却将其扩展了,支持了这种转换。例子中rC是一个非const型的变量,而它却被绑定到一个非变量的函数上,当然了,函数的内容是不可变的(这相当于对一个常数的引用),这种强行对常数的引用在rC的值发生变化时会怎么样呢?如果rC是对一个变量(假如是C1)的引用,则C1也会跟着变化,但对一个函数的引用结果我就不太清楚了,总感觉挺怪的。真不知你这个警告是怎么搞出来的。