C++のポインタと継承について勉強中です。\
名前と給与を含むベクター従業員クラスのポインターを作成しました。また、氏名や給与をプリントアウトするプリント機能も搭載。
仮想化しました
virtual void print() const;
また、ここに関数の実装があります
void Employee::print() const
{
cout << "Inquiry Employee info..." << endl;
cout << "Name:" << get_name() << "\n";
cout << "Salary:" << get_salary() << "\n" << "\n";
}
派生クラスでは、個人データの部門名をもう 1 つ追加し、印刷機能をオーバーライドしました。派生クラスをポインターベクトルに配置し、派生関数で関数を呼び出そうとしました。ただし、基本クラスの関数のみを呼び出します。
派生クラスオブジェクト自体を作成し、その印刷関数を呼び出すと、機能しました。
基本クラスのポインター ベクトルの派生クラス オブジェクトを派生クラスの関数を呼び出せるようにするには、何を変更すればよいですか?
添加 ##
#ifndef MANAGER_H
#define MANAGER_H
#include <string>
#include<iostream>
#include "ccc_empl.h"
#include <iomanip>
class Manager : public Employee
{
public:
Manager();
Manager(string name, double salary, string dept);
~Manager();
virtual string get_department() const;
void print();
private:
string deptName;
};
#endif
実装
#include <iostream>
#include <string>
#include "manager.h"
#include "ccc_empl.h"
Manager::Manager(){}
Manager::Manager(string name, double salary, string dept)
: Employee(name,salary)
{
deptName = dept;
}
Manager::~Manager(){}
string Manager::get_department() const
{
return deptName;
}
void Manager::print()
{
cout << "Inquiry Manager info..." << endl;
cout << "Name:" << get_name() << "\n";
cout << "Salary:";
cout << get_salary() << "\n";
cout << "Department:"<< get_department() << endl << endl;
}