我試圖添加對象到「內容」向量,並使用show()在他們所有。 但是,「基地」的兒童(A,B)的對象表現得像他們的「基地」類型, 什麼不是我的意圖。看起來,我試圖使用虛擬功能,但它不起作用。對象的向量
我希望代碼能夠說明問題。
class Base {
public:
virtual void show() { cout << "Base "; }
};
class A : public Base {
public:
virtual void show() { cout << "A "; }
};
class B : public Base {
public:
virtual void show() { cout << "B"; }
};
vector<Base> content;
void add(Base &o) {
content.push_back(o);
}
A test1;
B test2;
add(test1);
add(test2);
for (size_t i = 0; i < content.size(); i++) {
collection[i].show(); // output is: Base Base instead of A B
}
在此先感謝。
作爲答案的代碼通常無法描繪很多信息。你需要解釋它:它解決了什麼問題,它是如何解決的,等等。另外,你不提「delete」。編輯:接受;哦,諷刺。 – GManNickG 2010-01-04 21:59:30
GMan:沒有'new',沒有'delete' – swegi 2010-01-04 22:03:19
夠公平的,但這並不是它將如何用於真正的代碼。它將使用'new'和'delete'。 – GManNickG 2010-01-04 22:05:02