注册 登录
编程论坛 C++教室

急!求助:帮忙写个程序 小弟我刚学C++~谢谢哥姐了!

bester214 发布于 2009-11-12 20:28, 879 次点击
设计一个虚基类base,里面有姓名、年龄私有数据成员,派生出领导类leader,里面有职务,部门私有数据成员,由base类派生出工程师类engineer,里面有职称,专业私有数据成员,再由leader和engineer类共同派生出主任工程师类chairman。 最后主函数用个例子初始化就好了。 逻辑结构是个菱形的结构!

谢谢了!

小弟在等~~~~~~~~~~~~
12 回复
#2
一旋无风2009-11-12 20:39
写好了,结贴不?
#3
qlc002009-11-12 21:13
这个程序很好写的,还是自己写吧!那样才能有进步!
#4
chengUFO2009-11-12 21:19
这个很简单。。。自己动手。。。
#5
一旋无风2009-11-12 21:44
自己动手吧,很好写的,呵呵
#6
bester2142009-11-12 22:34
#include <iostream>
#include<cstring>
using namespace std;
class base
{
    int age;
    char* name;
public:
    base(int a,char* na)
    {
        age=a;
        name=new char[strlen(na)+1];
        strcpy (name,na);
    }

~base(){}
delete char;
};

class leader:virtual public  base
{
    char* zhiwei;
    char* depart;
public:
    leader(na,a,char* zhi,char* dep)
    {
        zhi=new char[strlen(zhi)+1];
        strcpy (zhiwei,zhi);
        dep=new char[strlen(dep)+1];
        strcpy (depart,dep);
    }

~leader(){}
delete char;
};

class engineer:virtual public base
{
    char* zhicheng;
    char* career;
public:
    engineer(na,a,char*zhic,char* car);
    {
        zhic=new char[strlen(zhic)+1];
        strcpy (zhicheng,zhic);
        car=new char[strlen(car)+1];
        strcpy(career,car);
    }
~engineer(){}
delete char;
};

class chairman:public leader,public engineer
{
public:
    chairman(na,a,char*zhi,char*dep,char*zhic,char*car)
};

int main()
{

}
 
我自己只能写到这样的 期中关于zhic=new char[strlen(zhic)+1];
        strcpy (zhicheng,zhic);
        car=new char[strlen(car)+1];
        strcpy(career,car);  我自己搞不清楚 还有在chairman类写不来 还有int main主函数写不出

救命啊~ 帮我改好了 当然结分啦~ 小弟谢过了
#7
flyingcloude2009-11-13 12:35
strlen是计算字符串的长度,
strcpy是字符串的复制。
#8
一旋无风2009-11-13 12:41
#include <iostream>
#include<cstring>
using namespace std;
class base
{
    int age;
    char* name;
public:
    base(int a,char* na)
    {
        age=a;
        name=new char[strlen(na)+1];
        strcpy (name,na);
    }
virtual void display()=0;

~base(){}
//delete char;
};

class leader:virtual public  base
{
    char* zhiwei;
    char* depart;
public:
    leader(int a,char*na,char* zhi,char* dep):base(a,na)
    {
        zhi=new char[strlen(zhi)+1];
        strcpy (zhiwei,zhi);
        dep=new char[strlen(dep)+1];
        strcpy (depart,dep);
    }
void display()
{
cout<<"姓名"<<name<<endl;//写一个示范一下,其他的信息自己添吧,engineer类一样弄,下面就不弄了,自己看着办哦
}
~leader(){}
//delete char;
};

class engineer: virtual public base
{
    char* zhicheng;
    char* career;
public:
    engineer(int a,char* na,char*zhic,char* car):base(a,na)
    {
        zhic=new char[strlen(zhic)+1];
        strcpy (zhicheng,zhic);
        car=new char[strlen(car)+1];
        strcpy(career,car);
    }
void display()
{..........}//自己想显示什么就弄什么
~engineer(){}
delete char;
};

class chairman:public leader,public engineer
{
public:
    chairman(int a,char* na,char*zhi,char*dep,char*zhic,char*car):leader(a,na,zhi,dep),engineer(zhic,car){}
void display(){.........}//自己弄
};

int main()
{
leader L(18,“哥”,“书记”,“团委办公室”);
L.display();
//其他的照样子弄就是了,自己动动手吧,这样才能进步,加油哦

}
#9
bester2142009-11-13 16:25
#include <iostream>
#include<cstring>
using namespace std;
class base
{
    int age;
    char* name;
public:
    base(int a,char* na)
    {
        age=a;
        name=new char[strlen(na)+1];
        strcpy (name,na);
    }

    virtual void display()=0;
~base(){}
//delete char;
};

class leader:virtual public  base
{
    char* zhiwei;
    char* depart;
public:
    leader(na,a,char* zhi,char* dep):base(a,na)
    {
        zhi=new char[strlen(zhi)+1];
        strcpy (zhiwei,zhi);
        dep=new char[strlen(dep)+1];
        strcpy (depart,dep);
    }
void display()
{
cout<<"姓名"<<name<<"年龄"<<age<<"职位"<<zhiwei<<"部门"<<depart<<endl;
}

~leader(){}
//delete char;
};

class engineer:virtual public base
{
    char* zhicheng;
    char* career;
public:
    engineer(na,a,char* zhic,char* car):base(a,na)
    {
        zhic=new char[strlen(zhic)+1];
        strcpy (zhicheng,zhic);
        car=new char[strlen(car)+1];
        strcpy(career,car);
    }
    void display()
    {
        cout<<"姓名"<<name<<"年龄"<<age<<"职称"<<zhicheng<<"职业"<<career<<endl;
    }
~engineer(){}
//delete char;
};

class chairman:public leader,public engineer
{
public:
    chairman(int a,char* na,char* zhi,char* dep,char* zhic,char* car):leader(a,na,zhi,dep),engineer(zhic,car){}
void display()
{
      cout<<"姓名"<<name<<"年龄"<<age<<"职称"<<zhicheng<<"职业"<<career<<"职位"<<zhiwei<<"部门"<<depart<<endl;
}
};

void main()
{
   
    leader L("三弟",28,"书记","团委");
    L.display();
    engineer e("二哥",29,"助教","电子工程");
    e.display();
    chairman c("一哥",40,"主任","电子工程","教授","办公室");
    c.display();

}

这样子了 调试通不过 还是很多 错的 怎么改呢?
#10
一旋无风2009-11-14 00:48
你真是的,看清楚我的模板 啊,你好多地方错了
#11
一旋无风2009-11-14 01:29
#include <iostream>
#include<string>
using namespace std;
class base
{
public:
 base(int a,string na)
    {
        age=a;
        name=na;
    }
 ~base(){}
    virtual void display()=0;
protected:
    int age;
    string name;
};

class leader:virtual public  base
{
public:
    leader(int a,string na,string zhi,string dep):base(a,na)
    {
        zhiwei=zhi;
        depart=dep;
    }
    ~leader(){}
void display()
{
cout<<"姓名  "<<name<<"年龄  "<<age<<"职位  "<<zhiwei<<"部门  "<<depart<<endl;
}

protected:
    string zhiwei;
    string depart;
};

class engineer:virtual public base
{
public:
    engineer(int a,string na,string zhic,string car):base(a,na)
    {
        zhicheng=zhic;
        career=car;
    }
    void display()
    {
        cout<<"姓名  "<<name<<"年龄  "<<age<<"职称  "<<zhicheng<<"职业  "<<career<<endl;
    }
    ~engineer(){}
protected:
    string zhicheng;
    string career;
};

class chairman:public leader, public engineer
{
public:
    chairman(int a,string na,string zhi,string dep,string zhic,string car):base(a,na),leader(a,na,zhi,dep),engineer(a,na,zhic,car){}
void display()
{
      cout<<"姓名  "<<name<<"年龄  "<<age<<"职称  "<<zhicheng<<"职业  "<<career<<"职位  "<<zhiwei<<"部门  "<<depart<<endl;
}
};

void main()
{
   
   leader L(28,"三弟","书记","团委");
   L.display();
    engineer e(29,"二哥","助教","电子工程");
    e.display();
    chairman c(40,"一哥","主任","电子工程","教授","办公室");
   c.display();

}
以前没试的,这个试了的,可以运行
#12
一旋无风2009-11-14 01:40
如过不用string.h的话,就按下面的来
#include <iostream>
#include<cstring>
using namespace std;
class base
{
public:
 base(int a,char* na)
    {
        age=a;
        name=new char[strlen(na)+1];//注意这里,下同
        strcpy (name,na);
    }
 ~base(){delete[] name;}
    virtual void display()=0;
protected:
    int age;
    char* name;
};

class leader:virtual public  base
{
public:
    leader(int a,char* na,char* zhi,char* dep):base(a,na)
    {
        zhiwei=new char[strlen(zhi)+1];
        strcpy (zhiwei,zhi);
        depart=new char[strlen(dep)+1];
        strcpy (depart,dep);
    }
    ~leader(){delete[] zhiwei,depart;}
void display()
{
cout<<"姓名  "<<name<<"  年龄  "<<age<<"  职位  "<<zhiwei<<"  部门  "<<depart<<endl;
}

protected:
    char* zhiwei;
    char* depart;
};

class engineer:virtual public base
{
public:
    engineer(int a,char* na,char* zhic,char* car):base(a,na)
    {
        zhicheng=new char[strlen(zhic)+1];
        strcpy (zhicheng,zhic);
        career=new char[strlen(car)+1];
        strcpy(career,car);
    }
    void display()
    {
        cout<<"姓名  "<<name<<"  年龄  "<<age<<"  职称  "<<zhicheng<<"  职业  "<<career<<endl;
    }
    ~engineer(){delete[]zhicheng,career;}
protected:
    char* zhicheng;
    char* career;
};

class chairman:public leader, public engineer
{
public:
    chairman(int a,char* na,char* zhi,char* dep,char* zhic,char* car):base(a,na),leader(a,na,zhi,dep),engineer(a,na,zhic,car){}
void display()
{
      cout<<"姓名 "<<name<<"  年龄  "<<age<<"  职称  "<<zhicheng<<"  职业  "<<career<<"  职位  "<<zhiwei<<" 部门  "<<depart<<endl;
}
};

void main()
{
   
   leader L(28,"三弟","书记","团委");
   L.display();
    engineer e(29,"二哥","助教","电子工程");
    e.display();
    chairman c(40,"一哥","主任","电子工程","教授","办公室");
   c.display();

}
#13
一旋无风2009-11-14 01:51
leader(na,a,char* zhi,char* dep):base(a,na)
    {
        zhi=new char[strlen(zhi)+1];//改成zhiwei=new char[strlen(zhi)+1];下面的都一样
        strcpy (zhiwei,zhi);
        dep=new char[strlen(dep)+1];
        strcpy (depart,dep);
    }

 engineer(na,a,char* zhic,char* car):base(a,na)
    {
        zhic=new char[strlen(zhic)+1];
        strcpy (zhicheng,zhic);
        car=new char[strlen(car)+1];
        strcpy(career,car);
    }
这里第一次的忘改了,失误哈
还有就是忘了私有成员不可继承,要改成保护成员,要不然就要设置返回值的公有成员函数,那样的话比较复杂,对我第一次的粗心和不负责道歉哈,后来的这两个都行,你可以试试
1