【发布时间】:2021-06-28 06:21:28
【问题描述】:
所以我有一个问题困扰了我好几天。我有 3 个课程:电影、沙拉、Dokumentum。这 3 个类描述了电影/电影类别,基本上“Csalad”是家庭电影,“Dokumentum”是文档电影。其他一切都在电影类中。 Film 类是父类,它有一些私有 char* 类型的小“数组”(如:char* cim[25+1],这是标题)。它的子类有一些特殊的私有变量,例如: Csalad 类的 char* eletkor[2+1]。 问题是我已经成功地将我的必需数据从一个 txt 文件读取到一个同步链表中(在 txt 文件中,每一行都有一个特殊的类型,我可以很容易地决定哪部电影属于哪个类别,并将它们放入正确的类,例如:如果某件事是我在 Film 构造函数中为他们制作的简单电影,如果这是一部适合家庭的电影,我在 Csalad 构造函数中制作它们)。但是我在将它们打印到屏幕上时遇到了问题。 我的主要目标是浏览我的链表,基本上将每一个数据都打印到屏幕上。这听起来很简单,但事实并非如此,因为我找不到一个既可以打印出标题的方法(例如,它位于 Film 类中,并且由像 Csalad 这样的每个其他类继承)又可以打印出 Csalad 的私有变量 eletkor。
你们能帮帮我吗?
这里有一些代码:
“kov”在英文中是next的意思。
电影.h
#include <cstring>
#include <iostream>
class Film{
private:
char cim[25+1], kiadas[4+1], idotartam[4+1], tema[25+1];
int hossz;
public:
Film* kov;
//Konstruktor
Film(char* dcim, char* dkiadas, char* didotartam, char* dtema, int dhossz){
strcpy(cim, dcim);
strcpy(kiadas, dkiadas);
strcpy(idotartam, didotartam);
strcpy(tema, dtema);
kov = NULL;
hossz = dhossz;
}
//Masolo konstruktor
Film(const Film& masolando){
strcpy(this->cim, masolando.cim);
strcpy(this->kiadas, masolando.kiadas);
strcpy(this->idotartam, masolando.idotartam);
strcpy(this->tema, masolando.tema);
this->kov = masolando.kov;
}
//Getterek
char* getCim(){
return cim;
}
int getHossz(){
return hossz;
}
};
Csalad.h
#include "Film.h"
class Csalad : public Film{
private:
char eletkor[2+1];
public:
Csalad(char* dcim, char* dkiadas, char* didotartam, char* dtema, char* deletkor, int dhossz):Film(dcim, dkiadas, didotartam, dtema, dhossz){
strcpy(eletkor, deletkor);
}
char* getEletkor(){
return eletkor;
}
std::ostream& print(std::ostream& os){
os << "Cs.Cim: " << getCim() << " " << "Eletkor: " << getEletkor();
return os;
}
};
Dokumentum.h 看起来与 Csalad.h 相似,此时并不重要。
那些 ostream 是我在主要功能中的可悲尝试。我通过一个名为“beolvas”的函数创建了链表,它给出了一个 Film* 类型的指针。所以我的主要看起来像这样:
int main(){
Film* eleje = NULL;
eleje = beolvas(eleje);
if(eleje == NULL){
cout << "Hiba a beolvasással" << endl;
return 1;
}
}
对于印刷部分,我一直在尝试做这样的事情:
for(*SOME KIND OF A TYPE OR SOMETHING* mozgo = eleje; mozgo != NULL; mozgo = mozgo->kov){
printing...
}
如果您还有其他问题,请随时提问。
【问题讨论】:
-
您是否考虑过使用
std::string而不是char[]?它使一切变得容易得多。 -
我会尝试,但其中一个标准是我不能(不得)使用 STL 容器,我认为字符串就是其中之一。 (感谢“;”提醒,我已更正)
-
是的,确实如此。好吧,那很不幸。
标签: c++ class linked-list