Привет, сообщество StackOverflow!
Я ожидаю разные результаты в зависимости от класса печатаемого объекта, но это не так.
Medium.h
#include "Datum.h"
#include "Person.h"
class Medium
{
public:
Medium(std::string initTitel);
virtual ~Medium(void);
void ausgabe() const;
bool ausleihen(Person person, Datum ausleihdatum);
void zurueckgeben();
unsigned int getID();
protected:
static unsigned int currentID;
unsigned int ID;
std::string titel;
bool status;
Datum datumAusgeliehen;
Person personAusgeliehen;
};
Medium.cpp
#include "Medium.h"
#include <string>
#include <iostream>
unsigned int Medium::currentID = 1;
Medium::Medium(std::string initTitel): titel(initTitel), status(false)
{
ID = currentID++;
}
Medium::~Medium(void) {}
void Medium::ausgabe() const
{
std::cout << "ID: " << ID << std::endl;
std::cout << "Titel: " << titel << std::endl;
switch (status)
{
case true:
std::cout << "Status : Das Medium ist seit dem "
<< datumAusgeliehen << " an "
<< personAusgeliehen.getName() << " ausgeliehen."
<< std::endl;
break;
case false:
std::cout << "Status: Medium ist zurzeit nicht verliehen." << std::endl;
break;
}
}
Функция печатает ID , title и status to console.
Теперь, в зависимости от типа из Medium
, я хотел бы напечатать дополнительную информацию, используя функцию void ausgabe() const
.
Пример. Если носителем является book
( на немецком языке buch = book ), должна быть напечатана информация об авторе в дополнение к другой информации, доступной вMedium
класс.то есть у меня есть подкласс с именем Buch
, который также имеет функцию void ausgabe() const
, которая должна печатать эту дополнительную информацию в классе Buch
.
Buch.h
#include "Medium.h"
class Buch: public Medium
{
public:
Buch();
Buch(std::string initTitel, std::string initAutor);
virtual ~Buch();
void ausgabe() const;
private:
std::string autor;
};
Buch.cpp
#include "Buch.h"
Buch::Buch(std::string initTitel, std::string initAutor): Medium(initTitel), autor(initAutor)
{ // TODO Auto-generated constructor stub }
Buch::~Buch() { // TODO Auto-generated destructor stub }
void Buch::ausgabe() const
{
Medium::ausgabe();
std::cout << "Autor: " << autor << std::endl;
}
Насколько я знаю: в классе Buch
при вызове функции вывода ausgabe()
дополнительная информация autor
будет напечатана автоматически.Но для остальной информации из Medium
класса, не могли бы вы помочь.Спасибо за вашу помощь:)