我有以下情况:
class B;
class A {
private:
int n;
public:
A& operator=(const A& a) {
}
A& operator=(const int n) {
this->n = n;
}
friend class B;
};
class B {
private:
A a;
public:
operator A&() {
return a;
}
operator int&() {
return a.n;
}
};
当我执行此代码时:
A a;
B b;
int i = b;
a = b;
a = i;
我有以下错误:
error C2593: 'operator =' is ambiguous
..\CrossPPTest\TestProxy.cpp(40): could be 'A &A::operator =(const int)'
..\CrossPPTest\TestProxy.cpp(37): or 'A &A::operator =(const A &)'
while trying to match the argument list '(A, B)'
假设我无法添加,如何解决这种歧义
A& operator =(const B&)
到 A 类。
我必须完全这样做的原因很复杂,但如果这样的事情能奏效,那就太好了。
可能有一些优先级或类似操作员的显式关键字......任何建议都非常感谢。
更新:代码的第二部分不能使用任何类型的强制转换。问题是找到仅修改第一个代码部分的解决方案。
另一个更新:代码部分 #2 必须按原样编译。