我正在用C++ 11智能指針重寫一個應用程序。C++ 11智能指針和多態性
我有一個基類:
class A {};
而派生類:
class B : public A {
public:
int b;
};
我有包含與A或B的對象的載體另一個類:
class C {
public:
vector<shared_ptr<A>> v;
};
我用A(基類)對象構造C沒有問題,但是如何用B(派生類)對象填充它?
我想這一點:
for(int i = 0; i < 10; i++) {
v.push_back(make_shared<B>());
v.back()->b = 1;
};
,編譯器返回: 錯誤: 'A級' 沒有名爲 'B'
你在做什麼?聽起來像將A看作多態是一個錯誤的想法,因爲你不會使用它。 –
這不是關於智能指針,而是錯誤地使用多態。用虛函數替換public b成員(可能是get和set函數)。 –
我簡化了類。在他們的真實形式中,多態是有意義的。 –