我有这些代码:C++构造隐式类型转换
class Type2 {
public:
Type2(const Type1 & type);
Type2(int);
const Type2 & operator=(const Type2 & type2);
//....
};
...
Type1 t1(13);
Type2 t2(4);
t2=t1;
正如我理解,每个第二类型的1参数构造没有明确关键字应该是指任何类型1的对象或者int值可以是隐式传达给Type2物体。
但在最后一行t2 = t1;,MS Visual Studio中给了我这个编译错误:
....error C2679: binary '=' : no operator found which takes a right-hand operand of type 'Type1' (or there is no acceptable conversion)....
好像MS Visual Studio中坚持T2 = T1;必须与lhs = Type2和rhs = Type1的赋值运算符匹配。为什么不能将rhs隐式转换为t2,然后使用Type2 = Type2运算符进行复制?
这段代码在VS2010中编译得很好。 –
我知道为什么。因为我的Type1有一个转换运算符:class Type1 {operator Type2()}; – JavaMan
我可以关闭一个我自己找到答案的问题吗? – JavaMan