class A
{
public:
A();
~A();
virtual void show();
};
class B::public A
{
public:
B();
~B();
virtual void show();
};
class C::public A
{
public:
C();
~C();
virtual void show();
};
int main()
{
B b1;
C c1;
list<A*> info;
info.push_back(&b1);
info.push_back(&c1);
for (list<A*>::iterator it = info.begin(); it != info.end(); it++)
{
it ->show();
}
return 0;
};
這樣寫會報錯 ,有沒有大神指點一下。主要目的是希望有一個能代表所有子類物件的集合,確定是哪個子類物件的時候,就呼叫該物件的相應函式
uj5u.com熱心網友回復:
是析構的時候報的錯吧?改成虛解構式uj5u.com熱心網友回復:
還有改成(*it)->show()uj5u.com熱心網友回復:
而且你這是在源檔案寫的吧,都沒有定義建構式
,其他函式可以不定義,但是你創建物件的建構式必須定義,并且虛函式也必須定義,不然就報錯
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/91637.html
標籤:C++ 語言
下一篇:c語言 基于兩個鏈表實作存盤兩個班級的成績并降序排列 然后合并兩個鏈表 保持降序 但是合并失敗了,求大佬指點哪里出現了錯誤(merge為合并函式
