C++ 错误:预期的类成员或基类名称 ...int e、int f、string pa、string direct、string distrib):公共视频
Posted
技术标签:
【中文标题】C++ 错误:预期的类成员或基类名称 ...int e、int f、string pa、string direct、string distrib):公共视频【英文标题】:C++ error: expected class member or base class name ...int e, int f, string pa, string direct, string distrib) : public Video 【发布时间】:2021-05-30 15:35:09 【问题描述】:我们认为我们的继承存在问题,但我们不知道如何解决。 (我们有 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
使用此代码:
main.cpp
#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;
Serie.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
Serie.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;
Pelicula.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;
在导致此问题之前,打印了另一个问题,即“重新声明”视频类,如果这可能相关,请注明。
【问题讨论】:
从该行删除public
。
【参考方案1】:
您将继承声明为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&
作为默认参数类型。
【讨论】:
以上是关于C++ 错误:预期的类成员或基类名称 ...int e、int f、string pa、string direct、string distrib):公共视频的主要内容,如果未能解决你的问题,请参考以下文章