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

使用此代码:

ma​​in.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&amp; 作为默认参数类型。

【讨论】:

以上是关于C++ 错误:预期的类成员或基类名称 ...int e、int f、string pa、string direct、string distrib):公共视频的主要内容,如果未能解决你的问题,请参考以下文章

python之类的继承

C++:错误:“”标记之前的预期类名

java学习-2

MFC常用的类详细介绍

在另一个成员函数中调用成员函数时,在“int”之前的预期主表达式

从成员函数打印 vector<int> 元素时出现 C++ 段错误