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
此代碼中沒有**強制轉換**。有**隱式轉換**。強制轉換是您在源代碼中編寫的內容,以告知編譯器進行轉換。 –