qq_53014812
2021-04-24 23:36
采纳率: 100%
浏览 196

【C++】expected type-specifier类问题

#include <iostream>
#include <string>
using namespace std ;

/*****************************************************功能实现类***************************************************/ 
 class student 
 {
 	public:
 		student(); 
 	    void Menu();//菜单 
 	    void Exit();
 	    void Add();//添加学生 
 	    int WJ_num;//文件人数 
		student **SZ;//学生数组指针 
 	    
 	    ~student();
 	
 	private: 		 	
};

student::student()//构造函数 
{
	this->WJ_num = 0;//初始化人数 
	this->SZ = NULL; //初始化数组 
}
student::~student()//析构函数 
{
}

void student::Menu() //菜单函数 
{
	cout<<"  学生成绩登记表  "<<endl;
	cout<<"1.添加学生成绩信息"<<endl; 
    cout<<"2.显示学生成绩信息"<<endl;
	cout<<"3.删除学生成绩信息"<<endl;
	cout<<"4.查找学生"<<endl;
	cout<<"5.退出登记表"<<endl;		
}
void student::Exit()//退出函数
{
	cout<<"已退出"<<endl;
	system("pause");

 }
 
void student::Add()
{
	cout<<"输入添加数量"<<endl;
	int Add_num = 0;
	cin>>Add_num;
	 if (Add_num>0)
	 {
	 	int newSize = this->WJ_num + Add_num;//计算空间大小 
		student ** newSpace = new student*[newSize];//开辟新空间 
		if(this->SZ != NULL)//将原空间下内容放到新空间下 
		{
			for(int i = 0;i<this->WJ_num;i++)
			{
				newSpace[i] = this->SZ[i];
			}	
		}  
	 	
	 
	for(int i=0;i<Add_num;i++) 
	{
		int num;
		string name;
		int grade;
		int achievement;
		
		cout<<"请输入第"<<i+1<<"个同学学号"<<endl;
		cin>>num;
		cout<<"请输入第"<<i+1<<"个同学名字"<<endl;
		cin>>name;
		cout<<"请输入第"<<i+1<<"个同学成绩"<<endl;
		cin>>achievement;
		cout<<"请选择年级"<<endl;
		cout<<"1.一年级"<<endl; 
		cout<<"2.二年级"<<endl;
		cout<<"3.三年级"<<endl;
		cin>>grade;
		
		student*student_ = NULL;
		switch(grade)
		{
		  case 1:
		  student_ = new grade_1(num,name,achievement,1) ;
		  break;
		  case 2:
		  student_ = new grade_2(num,name,achievement,2) ;
		  break;
		  case 3: 
		  student_ = new grade_3(num,name,achievement,3) ;
		  break;
		  default:break;
		} 
		newSpace[this->WJ_num + i] = student_;				
	}
	delete[] this-> SZ;//释放原有空间 
	this->SZ = newSpace;//更新新空间指向 
	this->WJ_num = newSize;//更新个数
	cout<<"已添加"<< Add_num<<"个同学"<<endl;//提示添加完成 
   } 
   else 
   {
   	cout<<"输入有误"<<endl;
	} 
	system("pause"); 
 } 
 
  /*****************************************************学生基类***************************************************/ 
 class studentKind     
 {
 	public:
 		
 		virtual void showStu() = 0;//显示信息 
 		virtual string getgrade() = 0;//显示年级 
 		
        int stu_Num;//学号 
		string stu_Name;//名字 
		int stu_Grade;//年级 
		int stu_Achievement;//成绩 
		  		

  } ;

 /*****************************************************一年级类***************************************************/ 
   class grade_1:public studentKind  
  {
  	public:
  	    grade_1(int stu_num,string stu_name,int stu_achievement,int stu_grade);
  	    virtual void showStu();//显示信息 
 		virtual string getgrade();//显示年级
  };
    grade_1::grade_1(int stu_num,string stu_name,int stu_achievement,int stu_grade )//grade_1的结构函数 
  {
  	this->stu_Num = stu_num;
  	this->stu_Name = stu_name;
  	this->stu_Grade = stu_grade;
  	this->stu_Achievement = stu_achievement;
  	
  }
  string grade_1::getgrade()//获取年级 
  {
  	return string("一年级");
  }
  
  void grade_1::showStu()//显示一年级信息 
  {
  	cout<<"学号:"<<this->stu_Num<<" "<<"名字:"<<this->stu_Name<<"  "<<"成绩:"<<this->stu_Achievement<<"年级:"<<stu_Grade<<endl;
  	
  }
  
   /*****************************************************二年级类***************************************************/ 
   class grade_2:public studentKind  
  {
  	public:
  	    grade_2(int stu_num,string stu_name,int stu_achievement,int stu_grade);
  	    virtual void showStu();//显示信息 
 		virtual string getgrade();//显示年级
  };
    grade_2::grade_2(int stu_num,string stu_name,int stu_achievement ,int stu_grade)//grade_2的结构函数 
  {
  	this->stu_Num = stu_num;
  	this->stu_Name = stu_name;
  	this->stu_Grade = stu_grade;
  	this->stu_Achievement = stu_achievement;
  	
  }
  string grade_2::getgrade()//获取年级 
  {
  	return string("二年级");
  }
  
  void grade_2::showStu()//显示二年级信息 
  {
  	cout<<"学号:"<<this->stu_Num<<" "<<"名字:"<<this->stu_Name<<"  "<<"成绩:"<<this->stu_Achievement<<"年级:"<<stu_Grade<<endl;
  	
  }
  
     /*****************************************************三年级类***************************************************/ 
   class grade_3:public studentKind  
  {
  	public:
  	    grade_3(int stu_num,string stu_name,int stu_achievement,int stu_grade);
  	    virtual void showStu();//显示信息 
 		virtual string getgrade();//显示年级
  };
    grade_3::grade_3(int stu_num,string stu_name,int stu_achievement,int stu_grade )//grade_3的结构函数 
  {
  	this->stu_Num = stu_num;
  	this->stu_Name = stu_name;
  	this->stu_Grade = stu_grade;
  	this->stu_Achievement = stu_achievement;
  	
  }
  string grade_3::getgrade()//获取年级 
  {
  	return string("三年级");
  }
  
  void grade_3::showStu()//显示三年级信息 
  {
  	cout<<"学号:"<<this->stu_Num<<" "<<"名字:"<<this->stu_Name<<"  "<<"成绩:"<<this->stu_Achievement<<"年级:"<<stu_Grade<<endl;
  	
  }
  

  	    
 /*****************************************************主函数**************************************************/
int main()
{

	while(1)
	{
	student stu;
	stu.Menu();//显示菜单
	int num;
	cout<<"输入操作序号"<<endl;
	cin>>num;	
	switch(num)
	{
		case 1:  stu.Add() ;  break;//添加学生成绩信息
		case 2:   break;//显示学生成绩信息
		case 3:   break;//删除学生成绩信息
		case 4:   break;//查找学生
		case 5:  stu.Exit() ; break;//退出登记表
		
		
	 }	
	 system("pause");
	 return 0;
    }
 } 

这是我没有完成的一个作业,出问题的地方在(功能实现类)void student::Add()中,switch(grade)出现了问题

编译时提示:

87    20    C:\Users\Lenovo\Desktop\学生成绩登记表4.24.cpp    [Error] expected type-specifier before 'grade_1'

87    20    C:\Users\Lenovo\Desktop\学生成绩登记表4.24.cpp    [Error] expected ';' before 'grade_1'

90    20    C:\Users\Lenovo\Desktop\学生成绩登记表4.24.cpp    [Error] expected type-specifier before 'grade_2'

90    20    C:\Users\Lenovo\Desktop\学生成绩登记表4.24.cpp    [Error] expected ';' before 'grade_2'

93    20    C:\Users\Lenovo\Desktop\学生成绩登记表4.24.cpp    [Error] expected type-specifier before 'grade_3'

93    20    C:\Users\Lenovo\Desktop\学生成绩登记表4.24.cpp    [Error] expected ';' before 'grade_3'

 

请问这是什么问题,该怎么解决

 

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • lemon-l 2021-04-25 00:28
    已采纳

    grade_1,grade_2,grade_3基类是studentKind,student_是student类型,没法把grade_1,grade_2,grade_3类型指针复制给student类型指针

    已采纳该答案
    打赏 评论
  • 把grade_1,grade_2,grade_3,studentKind4个类放到student类的前面试试。

    1 打赏 评论
  • 有问必答小助手 2021-04-25 14:17

    您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    打赏 评论
  • 有问必答小助手 2021-04-26 16:01

    非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

    速戳参与调研>>>https://t.csdnimg.cn/Kf0y

    打赏 评论
  • C和C++技术博客 2021-04-26 19:38

    C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html

    打赏 评论

相关推荐 更多相似问题