看我的代碼,我可以投GoodMan
指針指向一個Man
指針,並使用兩個步驟傳遞給AddMan
函數。但是當我使用一步來做到這一點時,它不起作用。相反,它需要將Man
指針引用明確指向不僅指向Man
指針。這背後的原因是什麼?指示燈通過放置傳遞
class Man{
};
class GoodMan: public Man
{
};
void AddMan(Man*& man){};
int main()
{
GoodMan* good_man = new GoodMan() ;
//This works
Man* pMan2 = (Man*)good_man;
AddMan(pMan2);
//So I think this should work, But doesn't work
AddMan((Man*)good_man);
//But this works
AddMan((Man*&)good_man);
return 0;
}
MingW TDM GCC明確指出編譯錯誤中的問題,main.cpp:26:26:錯誤:從類型爲'Man *'的右值非類型'Man *&'的非const引用的無效初始化 AddMan (曼*)good_man); – user1
爲什麼你需要通過引用傳遞指針?按價值傳遞! –
@vincent。這只是一個示例來展示這種情況。 –