【发布时间】:2018-06-24 14:57:11
【问题描述】:
您好 StackOverflow 社区!
我期待不同的输出取决于要打印的对象的类别,但事实并非如此。
中等.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打印到控制台。
现在根据Medium 的type,我想使用函数void ausgabe() const 打印额外的信息。
示例:如果媒体是book(in German buch = book),除了@中可用的其他信息外,还应打印有关作者的信息987654327@上课。即,我有一个名为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 类的剩余信息,你能帮忙吗?谢谢你的帮助:)
【问题讨论】:
-
请简化类并发布 Medium.h 文件
-
请发帖minimal reproducible example。到目前为止,您的代码看起来是正确的,但您发布的部分并不完整。
-
还有这个:
personAusgeliehen.getName()?你连提都没提。也只需使用if (status)更改switch (status)。 -
你的 Medium 类声明在哪里?
-
对不起,我刚接触堆栈溢出:) 基本上整个事情都是关于一个包含书籍、杂志和 DVD 的“图书馆”。我省略了 DVD 和杂志的部分,因为它们基本相同。 gol 是打印整个“图书馆”,并根据“媒体”的类型不同的信息。
标签: c++ function class c++11 polymorphism