在c++中,類A派生了B、C,然后B、C又共同派生了類D。現(xiàn)在我在主程序中有語句switch(k),當(dāng)k值為1、2、3時,分別創(chuàng)建B、C、D的實例。我的寫法是這樣的:A a; //a為實例switch (k){ case 1: a=new B(); break; case 2: a=new C(); break; case 3: a=new D(); break;}這樣編譯時報了D處的錯ambiguous conversions ;若是寫成:switch (k){ case 1: B a(); break; case 2: C a(); break; case 3: D a(); break;}也會報錯說對象沒有建立完整。請教處理方法
熱心網(wǎng)友
第一段中由于,B,C都派生自A,所有D中繼承了兩個A的實例,當(dāng)生成對象時,就會讓編譯器不知道用哪個A實例。請將,A中的函數(shù)改為虛函數(shù)或純虛函數(shù)試試。應(yīng)該能解決問題為什么,a不是指針,我很奇怪,不知道你是如何實現(xiàn)類的,這樣很容易內(nèi)存出錯的。