| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 883 人关注过本帖
标题:怎样在switch语句后创建类对象??求解
只看楼主 加入收藏
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
结帖率:93.75%
收藏
已结贴  问题点数:10 回复次数:8 
怎样在switch语句后创建类对象??求解
写了一个学校管理系统,但是到最后选择的时候不太会,怎样在switch语句后创建类对象??求解啊求解
下面上代码代
程序代码:
#include <iostream>
#include <string>
using namespace std;
#define null
class record
{
public:
    record(string nam,string sex,int ca,int bir,string add,int a):name(nam),sex(sex),card(ca),birth(bir),address(add),age(a){}
    void input()
    {
        cout<<"请输入姓名:"<<endl; cin>>name;
        cout<<"请输入性别:"<<endl; cin>>sex;
        cout<<"请输入身份证号:"<<endl; cin>>card;
        cout<<"请输入生日:"<<endl; cin>>birth;
        cout<<"请输入地址:"<<endl; cin>>address;
        cout<<" 请输入年龄:"<<endl; cin>>age;
    }

    void display()
    {
        cout<<"姓名:"<<name<<" "<<"性别:"<<sex<<" "<<"身份证号:"<<card<<endl;
        cout<<"生日:"<<birth<<" "<<"地址:"<<address<<" "<<"年龄:"<<endl;
    }
private:
    string name;
    string sex;
    int card;
    int birth;
    string address;
    int age;
};
class student:public record
{
public:
    student(string nam,string sex,int ca,int bir,string add,int a,int num,int ro,string sub,int gr):record( nam, sex, ca, bir, add, a)
    {number=num;
    room=ro;
    subject=sub;
    grade=gr;
    }
    void inputstu()
    {
        input();
        cout<<"请输入学号:"<<endl; cin>>number;
        cout<<"请输入宿舍号:"<<endl; cin>>room;
        cout<<"请输入专业:"<<endl; cin>>subject;
        cout<<"请输入年级:"<<endl; cin>>grade;
    }
    void showstu()
    {
        display();
        cout<<"学号:"<<number<<" "<<"宿舍号:"<<room<<" "<<"专业:"<<subject<<" "<<"年级:"<<grade<<endl;
    }
private:
    int number;
    int room;
    string subject;
    int grade;
};
class teacher:public record
{
public:
    teacher(string nam,string sex,int ca,int bir,string add,int a,int ap,int wo,int ea,string th,string re,int yanum):
      record(nam,sex,ca,bir,add,a)
      {apartment=ap;
      work=wo;
      earn=ea;
      teach=th;
      research=re;
      yanumber=yanum;
      }
      void inputtea()
      {
          input();
          cout<<"请输入公寓:"<<endl; cin>>apartment;
          cout<<"请输入工作时间:"<<endl; cin>>work;
          cout<<"请输入所教专业:"<<endl; cin>>teach;
          cout<<"请输入科研单位:"<<endl; cin>>research;
          cout<<"请输入所带研究生数目:"<<endl; cin>>yanumber;
      }
      void showtea()
      {
          display();
          cout<<"公寓:"<<apartment<<" "<<"工作时间:"<<work<<" "<<"收入:"<<earn<<" "<<"所教科目:"<<teach<<" "<<"科研名称:"
              <<research<<" "<<"所带研究生数目:"<<yanumber<<endl;
      }
private:
    int apartment;
    int work;
    int earn;
    string teach;
    string research;
    int yanumber;
};
int main()
{   int flag=1;
    student *stu=null;teacher *tea=null;
    while(flag)
    {
        cout<<"================================================="<<endl;
        cout<<"      1 学生通道       2 教师通道                "<<endl;
        cout<<"      3 退出                                     "<<endl;
        cout<<"================================================="<<endl;
        cout<<"请输入您的选择:"<<endl;
        int choice;
        cin>>choice;
        switch(choice)
        {
    case 1: stu=new student();if(stu) *stu->inputstu();cout<<"现在核查一遍信息:"<<endl;*stu->showstu();break;
    case 2: tea=new student();if(tea) *tea->inputtea();cout<<"现在核查一遍信息:"<<endl;*tea->showtea();break;
    case 3: break;
        }
    }
    return 0;
}
搜索更多相关主题的帖子: 系统 null 学校管理 record 
2012-05-23 22:00
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:10 
#define那里定义有问题。student,teacher类因为没有定义默认不带参的构造函数,stu=new student()调用无效。
*stu->inputstu();这句也是错的,要么stu->inputstu();要么(*stu).inputstu();

我们都在路上。。。。。
2012-05-24 10:41
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
收藏
得分:0 
回复 2楼 hellovfp
你好!谢谢你能给我回复!我已经把你说到的问题都改了一下,学习到了!O(∩_∩)O~但是在构造student空函数的时候老是出现问题
:\c++\MSDev98\MyProjects\实验五\院校管理程序.cpp(40) : error C2512: 'record' : no appropriate default constructor available
执行 cl.exe 时出错.
但是在构造teacher类空函数时却不会出现这种情况,你能帮我看一下吗?谢谢!
下面是代码代
程序代码:
#include <iostream>
#include <string>
using namespace std;
class record
{
public:
    record(string nam,string sex,int ca,int bir,string add,int a):name(nam),sex(sex),card(ca),birth(bir),address(add),age(a){}
    void input()
    {
        cout<<"请输入姓名:"<<endl; cin>>name;
        cout<<"请输入性别:"<<endl; cin>>sex;
        cout<<"请输入身份证号:"<<endl; cin>>card;
        cout<<"请输入生日:"<<endl; cin>>birth;
        cout<<"请输入地址:"<<endl; cin>>address;
        cout<<" 请输入年龄:"<<endl; cin>>age;
    }

    void display()
    {
        cout<<"姓名:"<<name<<" "<<"性别:"<<sex<<" "<<"身份证号:"<<card<<endl;
        cout<<"生日:"<<birth<<" "<<"地址:"<<address<<" "<<"年龄:"<<endl;
    }
private:
    string name;
    string sex;
    int card;
    int birth;
    string address;
    int age;
};
class student:public record
{
public:
    student(string nam,string sex,int ca,int bir,string add,int a,int num,int ro,string sub,int gr):record( nam, sex, ca, bir, add, a)
    {number=num;
    room=ro;
    subject=sub;
    grade=gr;
    }
    student(){};                   //定义无参的构造函数
    void inputstu()
    {
        input();
        cout<<"请输入学号:"<<endl; cin>>number;
        cout<<"请输入宿舍号:"<<endl; cin>>room;
        cout<<"请输入专业:"<<endl; cin>>subject;
        cout<<"请输入年级:"<<endl; cin>>grade;
    }
    void showstu()
    {
        display();
        cout<<"学号:"<<number<<" "<<"宿舍号:"<<room<<" "<<"专业:"<<subject<<" "<<"年级:"<<grade<<endl;
    }
   
private:
    int number;
    int room;
    string subject;
    int grade;
};
class teacher:public record
{
public:
    teacher(string nam,string sex,int ca,int bir,string add,int a,int ap,int wo,int ea,string th,string re,int yanum):
      record(nam,sex,ca,bir,add,a)
      {apartment=ap;
      work=wo;
      earn=ea;
      teach=th;
      research=re;
      yanumber=yanum;
      }
      teacher(){};                  //定义无参的构造函数
      void inputtea()
      {
          input();
          cout<<"请输入公寓:"<<endl; cin>>apartment;
          cout<<"请输入工作时间:"<<endl; cin>>work;
          cout<<"请输入所教专业:"<<endl; cin>>teach;
          cout<<"请输入科研单位:"<<endl; cin>>research;
          cout<<"请输入所带研究生数目:"<<endl; cin>>yanumber;
      }
      void showtea()
      {
          display();
          cout<<"公寓:"<<apartment<<" "<<"工作时间:"<<work<<" "<<"收入:"<<earn<<" "<<"所教科目:"<<teach<<" "<<"科研名称:"
              <<research<<" "<<"所带研究生数目:"<<yanumber<<endl;
      }
private:
    int apartment;
    int work;
    int earn;
    string teach;
    string research;
    int yanumber;
};
int main()
{   int flag=1;
    student *stu=0;teacher *tea=0;
    while(flag)
    {
        cout<<"================================================="<<endl;
        cout<<"      1 学生通道       2 教师通道                "<<endl;
        cout<<"      3 退出                                     "<<endl;
        cout<<"================================================="<<endl;
        cout<<"请输入您的选择:"<<endl;
        int choice;
        cin>>choice;
        switch(choice)
        {
    case 1: stu=new student();if(stu) stu->inputstu();cout<<"现在核查一遍信息:"<<endl;stu->showstu();break;
    case 2: tea=new teacher();if(tea) tea->inputtea();cout<<"现在核查一遍信息:"<<endl;tea->showtea();break;
    case 3: break;
        }
    }
    return 0;
}
2012-05-24 12:37
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
error C2512: 'record' : no appropriate default constructor available
这句话编译器已经很清楚的告诉你了:record类没有提供默认构造函数。
基类是早于继承类实例化的。

我们都在路上。。。。。
2012-05-24 12:43
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
另外如果你不打算定义类的默认构造函数,也能实例化出对象。。
你可以使用类似于stu=new student(a, b, c, d)这种创建对象,这些都是C++基础,多看看书吧。

我们都在路上。。。。。
2012-05-24 12:50
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
收藏
得分:0 
回复 5楼 hellovfp
好的谢谢啊!我已经改过了。。。。哎,这程序问题怎么这么多,我都不好意思了,代码某错了,但在运行的时候出现了死循环,大哥,能给指点一下不?
2012-05-24 12:58
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
学会调试,你可以在某行代码那里用鼠标点一下,按F9下断点,然后按F5进行运行调试,在断点处停下来后,
你可以按F10单步,如果遇到函数,你可以按F11跟踪进函数体,再按F10单步。
取消断点你可以定位到刚才下断点的地方,再按一次F9。
调试过程中,下面的显示程序各个变量的地方,仔细观察这些值,找出为什么死循环。

我们都在路上。。。。。
2012-05-24 13:06
跳跳鱼
Rank: 2
等 级:论坛游民
帖 子:74
专家分:60
注 册:2011-5-4
收藏
得分:0 
回复 7楼 hellovfp
非常感谢!!!我们老师从来没跟我们说过这些!真的感觉学到好多。。
2012-05-24 13:42
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
回复 8楼 跳跳鱼
停止调试按shift + F5

如果你要固定观察某变量的变化,可以按下图所示,双击变量名,拖到如图所示的地方:

图片附件: 游客没有浏览图片的权限,请 登录注册

我们都在路上。。。。。
2012-05-24 13:55
快速回复:怎样在switch语句后创建类对象??求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022526 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved