我在獲取對象向量以打印派生類名稱而不是基類時出現問題。使用具有派生類值的基類函數
這些都是我的班
#include <vector>
#include <iostream>
using namespace std;
class Object
{
string name;
public:
string getName()
{
return name;
}
};
class Flashlight : public Object
{
string name = "Flashlight";
public:
string getName();
};
這是我的主,它具有對象的載體,在這一點上只需要打印出他們的名字。
int main()
{
vector<Object> items;
items.push_back(*new Flashlight);
for(int i = 0; i < items.size(); i++)
{
cout << i+1 << " " << items.at(i).getName();
}
}
現在如果我在對象分配的東西的名稱,將打印,但它不是使用派生類的價值觀,我只是希望它繼承了函數,那麼它用自己的價值觀。我試過在基類中實現函數(但是看到我將來可能會有很多這樣的代碼會導致大量冗餘代碼),但這也不起作用。
你需要有指針向量 – ST3
你的代碼遭受對象切片。因爲你有一個'矢量
@john:重寫成員變量的嘗試是同樣嚴重的問題。兩者都必須解決。 –