鑑於這種代碼:爲什麼Base * pd = new Derived;產生一個錯誤?
class Base{
public:
Base();
virtual ~Base();
};
class Derived: protected Base{
public:
virtual ~Derived();
};
在主我試圖賦予衍生的基地這樣:
Base *pd = new Derived;
爲什麼這個說法產生錯誤?
這裏new將返回一個對象類型的指針,我們總是可以將一個派生指針賦值給一個基類。糾正我,如果我錯了。
No code ?!可能有任何數量的錯誤... – 2010-12-18 23:35:00
可能是因爲你沒有聲明'Derived:Base' – BoltClock 2010-12-18 23:36:43
這應該工作,是的。最明顯的解決方案是@BoltClock提供的解決方案。派生必須首先繼承Base。如果情況並非如此,請提供一些能夠幫助某人診斷問題的代碼。另外,錯誤信息是什麼? – mingos 2010-12-18 23:51:39