| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2698 人关注过本帖
标题:请教下大家这段程序的错误在哪里?
取消只看楼主 加入收藏
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
结帖率:41.18%
收藏
已结贴  问题点数:5 回复次数:2 
请教下大家这段程序的错误在哪里?
程序代码:
#include <iostream>
#include <string>
using namespace std;
class Teacher
{
public:
    Teacher(string n, int ag, char s, string a, string te, string ti)
        :{age = ag; sex = s; tel = te; title = ti; addr = a; name = n; }
    void display();
protected:
    int age;
    char sex;
    string tel;
    string title;
    string addr;
    string name;
};

class Cadre: public Teacher
{
public:
    Cadre(string n, int ag, char s, string a, string te, string p, string ti)
        :Teacher(string n, int age, string a, string te, string ti) {post = p;}
protected:
    string post;
};

class Teacher_Cadre :public Cadre
{
public:
    void show();
    Teacher_Cadre(string n, int ag, char s, string a, string te, int w, string p, string ti)
        :Cadre(string n, int ag, char s, string a, string te, string p, string ti){wages = w; }
protected:
    int wages;
};

void Teacher_Cadre::show()
{
    display();
    cout << "wage:" << wages << endl;
    cout << "post:" << Cadre::post << endl;
}

void Teacher::display()
{
    cout << "name:" << name << endl;
    cout << "age:" << age << endl;
    cout << "sex:" << sex << endl;
    cout << "title" << title << endl;
    cout << "address:" << addr << endl;
    cout << "telephone:" << tel << endl;
}

int main(void)
{
    Teacher_Cadre tea("chenxingyin", 18'f', "YangqiaoRoad,fuzhou", "15386479123", 5600"teacher", "dr.");
    tea.show();

    return 0;
}
编译出挺多错误的,又不知道怎么改。求助下大家。谢谢
2016-01-31 17:22
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
收藏
得分:0 
不好意思。这个题目是分别定义Teacher和Cadre类,采用多重继承的方式由这两个类派生出新类Teacher_Cadre类。要求:1.在两个基类中都包含姓名,年龄,性别,地址,电话等数据成员
2.在Teacher类中包含数据成员title,在Cadre类中包含数据成员post。在Teacher_Cadre类中包含数据成员wages。
3.对两个基类的姓名,性别,地址,电话等数据成员用相同名字,在引用时指定作用域。
4.在类体中声明成员函数,在类外定义函数
5.在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名,年龄,性别,职称,地址,电话然后用cout输出工资
下面是错误信息:
1>------ 已启动生成: 项目: ex5.9_1, 配置: Debug Win32 ------
1>  5.9_1.cpp
1>c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(7): error C2059: 语法错误:“{”
1>c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(19): error C2059: 语法错误:“{”
1>c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(29): error C2371: “a”: 重定义;不同的基类型
1>  c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(29): note: 参见“a”的声明
1>c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(29): error C2275: “std::string”: 将此类型用作表达式非法
1>  c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring(2603): note: 参见“std::string”的声明
1>c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(29): error C2146: 语法错误: 缺少“)”(在标识符“p”的前面)
1>c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(29): error C2146: 语法错误: 缺少“)”(在标识符“n”的前面)
1>c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(38): error C2352: “Teacher::display”: 非静态成员函数的非法调用
1>  c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(9): note: 参见“Teacher::display”的声明
1>c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(39): error C2597: 对非静态成员“Cadre::post”的非法引用
1>  c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(39): note: 参见“Cadre::post”的声明
1>c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(40): error C2597: 对非静态成员“Cadre::addr”的非法引用
1>  c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(40): note: 参见“Cadre::addr”的声明
1>c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(41): error C2597: 对非静态成员“Cadre::tel”的非法引用
1>  c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(41): note: 参见“Cadre::tel”的声明
1>c:\users\busters\documents\visual studio 2015\projects\c++面向对象程序设计\ex5.9_1\ex5.9_1\5.9_1.cpp(55): error C2661: “Teacher_Cadre::Teacher_Cadre”: 没有重载函数接受 8 个参数
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

2016-01-31 21:26
家力掠
Rank: 2
等 级:论坛游民
帖 子:52
专家分:16
注 册:2015-6-28
收藏
得分:0 
谢谢大家。程序已经改好了。
[code]#include <iostream>
#include <string>
using namespace std;
class Teacher
{
public:
    Teacher(string n, int ag, char s, string ad, int te, string ti) :
    name(n), age(ag), sex(s), addr(ad), tel(te), title(ti){}
    void display();
protected:
    string name;
    int age;
    char sex;
    string addr;
    int tel;
    string title;
};

void Teacher::display()
{
    cout << "name:" << name << endl;
    cout << "age:" << age << endl;
    cout << "sex:" << sex << endl;
    cout << "address:" << addr << endl;
    cout << "telephone:" << tel << endl;
    cout << "title:" << title << endl;
}

class Cadre
{
public:
    Cadre(string p) :post(p){}
protected:
    string post;
};

class Teacher_Cadre:public Teacher,public Cadre
{
public:
    Teacher_Cadre(string n, int ag, char s, string ad, int te, string ti, string p, int w) :
        Teacher(n, ag, s, ad, te, ti), Cadre(p) {wage = w;}
    void show();
private:
    int wage;
};

void Teacher_Cadre::show()
{
    display();
    cout << "post:" << Cadre::post << endl;
    cout << "wages:" << wage << endl;
}

int main(void)
{
    Teacher_Cadre tea("wang-li", 18, 'f', "shanghailu,fuzhou", 653399, "dr.", "teacher", 5400);
    tea.display();

    return 0;
}/code]
2016-02-01 10:54
快速回复:请教下大家这段程序的错误在哪里?
数据加载中...
 
   



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

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