c++ - C++ 错误:预期的类成员或基类名称 ...int e、int f、string pa、string direct、string distrib):公共视频
问题描述
我们认为我们的继承有问题,但我们不知道如何解决它。(我们有 OOP 类)
控制台打印...
clang++-7 -pthread -std=c++17 -o main Pelicula.cpp Serie.cpp Video.cpp main.cpp
Pelicula.cpp:7:115: error: expected class member or base class name
...int e, int f, string pa, string direct, string distrib) : public Video(a...
^
1 error generated.
Serie.cpp:7:83: error: expected class member or base class name
...b, string c, int d, int e, int f, int ab, int cd) : public Video(a,b,c,d...
^
1 error generated.
exit status 1
使用此代码:
主文件
#include <iostream>
#include "Video.h"
#include "Serie.h"
#include "Pelicula.h"
using namespace std;
int main(){
Video *catalogo[2];
catalogo[0]= new Serie("Serie Narrativa","Stranger Things","Fantastico",8,50,120,25,4);
//vector[1]= new Serie("Falcon & The Winter Soldier",6,1);
catalogo[0]->muestraDatos();
int sel;
cout<<"+++++++++++++++\n\n=== Bienvenido a La plataforma SAJ ===\n\nElija las opciones\n1)Consultar peliculas y series\n2)Calificar"<<endl;
cin>>sel;
switch(sel){
case 1:
cout<<"CONSULTAR TOTAL DE VIDEO"<<endl;
//consultor
/*
int busqueda
for (int i=0;i<=tamaño automotor;i++){
if (automotor[x]->getTipoVideo()==busqueda)
busqueda=i;
}
automotor[busqueda];
*/
break;
case 2:
cout<<"Calificar video"<<endl;
break;
}
}
视频.h
#ifndef VIDEO_H
#define VIDEO_H
#include <iostream>
using namespace std;
class Video{
public:
Video(string a, string b, string c, int d, int e, int f);
void calificaVideo();
virtual void muestraDatos(); //agrega virtual luego Herencia
string getTipoVideo();
private:
string tipoVideo;
string nombreVideo;
string genero;
int calif;
int anioLanz;
int duracion;
};
#endif
视频.cpp
#include <iostream>
#include "Video.h"
//#include "Serie.h"
//#include "Pelicula.h"
using namespace std;
Video::Video(string a, string b, string c, int d, int e, int f){
tipoVideo=a;
nombreVideo=b;
genero=c;
if(d<0){d=0;}
else if(d>10){d=10;}
calif=d;
anioLanz=e;
duracion=f;
}
void Video::muestraDatos(){
cout<<"IMPRIMIR REGISTRO\nTipo de video: "<<tipoVideo<<"\nTítulo: "<<nombreVideo<<"\nGenero: "<<genero<<"\nCalificacion: "<<calif<<"\nAño de lanzamiento: "<<anioLanz<<"\nDuracion: "<<duracion<<endl;
}
void Video::calificaVideo(){
int d;
cout<<"Deme calificacion: ";
cin>>d;
if(d<0){d=0;}
else if(d>10){d=10;}
calif=d;
cout<<d<<" - Guardado!"<<endl;
}
string Video::getTipoVideo(){
return tipoVideo;
}
系列.h
#ifndef SERIE_H
#define SERIE_H
#include <iostream>
#include "Video.h"
using namespace std;
class Serie : public Video{
public:
Serie(string, string, string, int, int, int, int, int);
void muestraDatos();
private:
int episod_portemp;
int temporadas;
};
#endif
系列.cpp
#include <iostream>
#include "Serie.h"
//#include "Video.h"
using namespace std;
Serie::Serie(string a, string b, string c, int d, int e, int f, int ab, int cd) : public Video(a,b,c,d,e,f){
episod_portemp=ab;
temporadas=cd;
}
void Serie::muestraDatos(){
Video::muestraDatos();
cout<<"Episodios por temporada: "<<episod_portemp<<endl;
cout<<"Temporadas: "<<temporadas<<endl;
}
鹈鹕.h
#ifndef PELICULA_H
#define PELICULA_H
#include <iostream>
#include "Video.h"
using namespace std;
class Pelicula : public Video{
public:
Pelicula(string, string, string, int, int, int, string, string, string);
void muestraDatos();
private:
string pais;
string director;
string distribuidor;
};
#endif
Pelicula.cpp
#include <iostream>
#include "Pelicula.h"
//#include "Video.h"
using namespace std;
Pelicula::Pelicula(string a, string b, string c, int d, int e, int f, string pa, string direct, string distrib) : public Video(a,b,c,d,e,f){
pais=pa;
director=direct;
distribuidor=distrib;
}
void Pelicula::muestraDatos(){
Video::muestraDatos();
cout<<"Pais: "<<pais<<endl;
cout<<"Director: "<<director<<endl;
cout<<"Distribuidora: "<<distribuidor<<endl;
}
在导致这个问题之前,打印了另一个问题,它是“重新声明”类视频,如果这可能相关,idk。
解决方案
您将继承声明为public
. 您不会以相同的方式声明构造函数。
换句话说:
Serie::Serie(string a, string b, string c, int d, int e, int f, int ab, int cd) : Video(a,b,c,d,e,f) { ...
}
注意:为避免多余的副本,请使用
const std::string&
您的默认参数类型。
推荐阅读
- flutter - 将 Navigator 1.0 替换为 Navigator 2.0 到(仅限 Android)
- javascript - 如何在 React 中对对象内部的数组进行排序?
- javascript - 消除 .then() 块以获得更好的 JavaScript 代码结构
- android - TypeError:null 不是对象(评估 'OT.setNativeEvents')
- javascript - 浏览器源代码中是否嵌入了Web API(如EventTarget、DOM)的实现?
- python - 无法从 Python 中的子目录导入 *
- list - 对嵌套列表进行排序
- ios - 如何删除文本的一部分
- python - 将键盘挂钩附加到特定窗口
- sql - 如何在 tsql 中选择具有某些行优先级的随机行