标题:有关多个类间调用的问题
只看楼主
xiaoxiami9
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-4-20
 问题点数:0 回复次数:7 
有关多个类间调用的问题
有三个类分别是Student,Score,Operator,要求用Operator来调用前两个类,最后输出的形式如下:
学号     姓名    年龄    性别    JAVA    C    SQL
1        ...     ..      .      ..      ..    ..
....
其中JAVA,C,SQL是分数。
小弟的程序如下,比较长,不过还算规范,最后主函数只想用一句就能掉前三个类的内容,最后显示不出来,希望高手们指点一下,感激感激,代码中有注释,请参考
#include<iostream.h>
#include<string.h>
class Student{
public:
    Student(char *pName,int iAge,char *pSex) //构造函数
    {
        strcpy(name,pName);
        age=iAge;
        strcpy(sex,pSex);
        num++;  //学号自动累加
    }
    char *getName()
    {
        return name;
    }
    int getAge()
    {
        return age;
    }
    char *getSex()
    {
        return sex;
    }
    int getNum()
    {
        return no;
    }
    void print()  //用于显示“学号   姓名   年龄   性别”
    {
    Student s1("ddd",22,"f");
    Student s2("eee",21,"f");
    cout<<"学号"<<"\t"<<"姓名"<<"\t"<<"年龄"<<"\t"<<"性别"<<"\t";
       cout<<s1.getNum()<<"\t"<<s1.getName()<<s1.getAge()<<"\t"<<s1.getSex();
       cout<<s2.getNum()<<"\t"<<s2.getName()<<s2.getAge()<<"\t"<<s2.getSex();
    }

private:
    char name[10];
    int age;
    char sex[4];
    int no;
    static int num;
};
int Student::num=0;   //初始化计数器
class Score{
public:
    Score(int iJava,int iC,int iSql)   //构造函数(iJava,int iC,int iSql都是分数)
        
    {                                                                                       
        java=iJava;
        c=iC;
        sql=iSql;
    }
    int getJava()
    {
        return java;
    }
    int getC()
    {
        return c;
    }
    int getSql()
    {
        return sql;
    }
    void printer()    //在上边性别后接着显示“JAVA   C   SQL”的分数
    {
    Score f1(88,99,100);
    Score f2(77,66,55);
    cout<<"JAVA"<<"\t"<<"C"<<"\t"<<"SQL"<<endl;
    cout<<f1.getJava()<<"\t"<<f1.getC()<<"\t"<<f1.getSql()<<endl;
         cout<<f2.getJava()<<"\t"<<f2.getC()<<"\t"<<f2.getSql()<<endl;
    }
private:
    int java;
    int c;
    int sql;
};
class Operator{   //构造第三个类
public:
   
private:
};
    ????                       //这是想调用前两个类,不知道如何实现
main()
{
    Operator op???              //主函数只用一句话来完成以上输出
}
高手们帮小弟完善一下
搜索更多相关主题的帖子: JAVA SQL 个类 Student Operator 
2005-04-20 18:32
雨水
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2004-10-15
得分:0 
private:
};
    ????                       //这是想调用前两个类,不知道如何实现
main()
{
    Operator op???              //主函数只用一句话来完成以上输出
}
高手们帮小弟完善一下

第一个调用出可以在主函数中实现,把第三个类声明位前两个类的友元类,调用钱粮各类。

还有调用前两个 类,归根结蒂就是调用类中的函数,所以可以声明类的对象调用函数。
2005-04-25 21:24
apodemas
Rank: 1
等 级:新手上路
帖 子:153
专家分:0
注 册:2005-4-22
得分:0 
那个...在类声明中可以给对象初始化吗?就是这个:
void print()  //用于显示“学号   姓名   年龄   性别”
    {
    Student s1("ddd",22,"f");
    Student s2("eee",21,"f");

我自己试了试,编译连接没问题,运行就出错,想想也很容易想到这样.又去问了问老师,确实说这样不可以,不知道楼主这样做以前成功过吗?
至于楼主的问题,应该在各大教材上都有吧?不难实现.我前几天还看到了.

2005-05-01 11:56
终南山下
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-5-20
得分:0 
我觉的应该把前两个类的print函数防在构造函数里然后
class Operator{                         //构造第三个类
public:
Student s1("ddd",22,"f");
Student s2("eee",21,"f");
Score f1(88,99,100);
 Score f2(77,66,55);};
最后在main()
{Operator l;}//这是应用一个类的对象做为另一个类的数据成员来解决
2005-05-27 16:10
终南山下
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-5-20
得分:0 
那个...在类声明中可以给对象初始化吗?就是这个: void print() //用于显示“学号 姓名 年龄 性别” { Student s1("ddd",22,"f"); Student s2("eee",21,"f"); 这是可以的,它会自动调用构造函数
2005-05-27 16:11
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
得分:0 

class STUDENT { friend class AGENT; private: int id; string name; int sex; STUDENT *next; public: STUDENT(); STUDENT(int , string, int); ~STUDENT(); };

class SCORE { friend class AGENT; private: int id; int iJava; int iCpp; int iDatabase; SCORE *next; public: SCORE(); SCORE(int _id, int _iJava, int _iCpp, int _iDatabase) :id(_id),iJava(_iJava),iCpp(_iCpp),iDatabase(_iDatabase){next=0;}; ~SCORE(); };

class OPERATOR { private: STUDENT *stdFirst, *stdCurrent; SCORE *scoFirst, *scoCurrent; public: OPERATOR(); ~OPERATOR(); void insert(int, string, int, int, int, int); void printList() const; };


2005-05-31 08:51
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
得分:0 

using namespace std;

STUDENT::STUDENT() { id =0; next =0; }

STUDENT::STUDENT(int _id, string _name, int _sex) { id =_id; name =_name; sex =_sex; next =0; }

STUDENT::~STUDENT() { delete[] next; }

SCORE::SCORE() { }

SCORE::~SCORE() { delete[] next; }

OPERATOR::OPERATOR() { stdFirst=0; scoFirst=0; }

OPERATOR::~OPERATOR() { }

void OPERATOR::printList() const { STUDENT *s; SCORE *s1; s=stdFirst; s1=scoFirst; while(s!=0) { cout<<"Name: "<<s->name<<" ID: "<<s->id<<" java: "<<s1->iJava<<endl; s=s->next; } return; }

void OPERATOR::insert(int _id, string _name, int _sex, int _iJava, int _iCpp, int _iDatabase) { STUDENT *s; SCORE *s1; s=new STUDENT(_id, _name, _sex); s1=new SCORE(_id, _iJava, _iCpp, _iDatabase); if(0==stdFirst) { s->next=0; stdFirst=s; stdCurrent=s; } else { stdCurrent->next=s; stdCurrent=s; } if(0==scoFirst) { s1->next=0; scoFirst=s1; scoCurrent=s1; } else { scoCurrent->next=s1; scoCurrent=s1; } return; }


2005-05-31 08:53
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
得分:0 
主函数

int main(int argc, char *argv[])
{
  
  OPERATOR operator;
  
  operator.insert(1, string("xxx"), 1, 90, 90, 90);
  operator.insert(2, string("yyy"), 1, 80, 80, 80);
  operator.insert(3, string("zzz"), 0, 70, 70, 70);
  
  operator.printList();
  
  return 0;
}

2005-05-31 08:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-16199-1-1.html




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

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