我一直在四處尋找無果的解決方案,這一點,矢量繼承類
我有一些從一個基類繼承的類:
#ifndef navalVesselClass
#define navalVesselClass
#include <iostream>
#include <string>
class navalVessel
{
public:
std::string Name_;
std::string Type_;
std::string OperatingCountry_;
std::string Built_;
std::string ServiceDate_;
bool Active_;
double Length_;
double Displacement_;
double Beam_;
double Draft_;
double Speed_;
double Range_;
private:
};
#endif
,然後,例如一類繼承了:
#ifndef destroyerClass
#define destroyerClass
#include "surfaceCombatant.h"
#include <string>
class destroyer: public surfaceCombatant
{
public:
enum class ArmamentPrimary { ANTIAIR, MISSILE };
enum class ArmamentSecondary { TORPEDOS, MISSILE, ANTIAIR, ANTIGROUND };
ArmamentPrimary primaryArmament;
ArmamentSecondary secondaryArmament;
private:
};
#endif
現在,當我想存儲在一個向量我創建一個向量如下
這些對象std::vector<navalVessel *> shipFleet
利用這一點,我可以二者,驅逐艦和其他艦艇存儲在該載體中三分球,然而,一旦我嘗試再次檢索他們,他們是典型的有navalVessel'的,當然,我不能訪問任何派生的類變量?例如主要的武器,我只能訪問基類的屬性。
謝謝。
我認爲您正在尋找'dynamic_cast'? – crashmstr
我認爲你正在尋找重構你的設計? – Shoe
另外,我們可以閱讀代碼。你可以發佈代碼,而不是你的類的模式化版本嗎? – Shoe