在向量中存储继承的类

时间:2017-11-02 15:15:55

标签: c++ vector storage object-slicing

我有一个名为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的事实?

0 个答案:

没有答案