我有一个名为CEmploye的对象的主类,以及一个名为CTechnicien的类的子类。 这是CEmploye的代码
#pragma once
#include <iostream>
#include <string>
class CEmploye
{
public:
/*Constructeurs/Destructeurs*/
CEmploye ();
CEmploye (std::string p_nom, std::string p_prenom, int p_age, int p_anciennete);
~CEmploye ();
protected:
/*Nom de l'employe*/
std::string m_nom;
/*Prenom de l'employe*/
std::string m_prenom;
/*Age de l'employe*/
int m_age;
/*Annee d'anciennete de l'employe*/
int m_anciennete;
};
这是CTechnicien的代码:
#pragma once
#include "CEmploye.h"
class CTechnicien :
public CEmploye
{
public:
/*Constructeur/Destructeur*/
CTechnicien ();
CTechnicien (int p_nbUniteProduite, std::string p_nom, std::string p_prenom, int p_age, int p_anciennete);
~CTechnicien ();
protected:
/*Nombre d'unite produite par le technicien*/
int m_nbUniteProduite;
static float BASE;
static float PART;
static float
我创建了另一个类来管理所有内容,其中包含一个CEmploye的向量:
std::vector<CEmploye> m_vecteurEmploye;
我想要做的是将CTechnicien存储在此向量中。但是,当我这样做时,似乎我的CTechnicien被转换成了一个CEmploye,而这不是我想要的。 所以我在我的CPersonnel中有一个方法:
void CPersonnel::Embaucher (CEmploye * p_pNew)
{
m_vecteurEmploye.push_back (*p_pNew);
return;
}
这是我为存储课程所做的一些代码:
CPersonnel mainListe;
CTechnicien test (500, "test", "Test", 25, 0);
mainListe.Embaucher (&test);
那么有没有办法将我的CTechnicien存放在我的CEmploye载体中,而不会失去它作为CTechnicien的事实?