C++标准中没有指出我可以隐式转换两次的东西吗?即如果我的函数需要对象A并且我用对象C调用它,即使C和A之间没有直接转换,但是C到B之间以及从B转换为A,也不会得到编译错误?在人生的某个时候,尽管这段代码是合法的,但今天我发现我错了。C++中的两阶段隐式转换
class A {};
class B {
A m_a;
public:
operator A() { return m_a; }
};
class C {
B m_b;
public:
operator B() { return m_b; }
};
void f(A a){}
int main()
{
C c;
f(c);
return 0;
}
顺便说一句,您在类'B'中缺少'operator A' – kfsone
此代码中没有**强制转换**。有**隐式转换**。强制转换是您在源代码中编写的内容,以告知编译器进行转换。 –