c++编程问题

#include<iostream>
using namespace std;
class Student
{public:
Student(string nam,int a,string t)
{
name=nam;
age=a;
title=t;
}
void display()
{
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"title:"<<title<<endl;
}
protected:
string name;
int age;
string title;
};
class Teacher
{public:
Teacher(char nam[],char s,float sco)
{strcpy(name1,nam);
sec=s;
score=sco;}
void display()
{cout<<"name:"<<name1<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl;
}
protected:
string name1;
char sex;
float score;
};
class Graduate:public Student,public Teacher
{public:
Graduate(string nam,int a,string t,char s,float sco,float w):Student(nam,a,t),Teacher(nam,s,soc),wage(w){}
void show()
{
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl;
cout<<"title:"<<title<<endl;
cout<<"wages:"<<wage<<endl;
}
private:
float wage;
};
int main()
{
Graduate grad1("wang-li",24,"assistant",'f',89.5,1234.5);
grad1.show();
return 0;
}
怎么编写都有2个错误,请求哪位高手帮我改正,谢谢!
ompiling...
xiaofang.cpp
G:\c++Á·Ï°\н¨Îļþ¼Ð (11)\xiaofang.cpp(13) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no acceptabl
e conversion)
G:\c++Á·Ï°\н¨Îļþ¼Ð (11)\xiaofang.cpp(15) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no acceptabl
e conversion)
Error executing cl.exe.

xiaofang.exe - 2 error(s), 0 warning(s)
这是出自课本的一道源程序,要把程序改对比较容易,用指针或者去掉某些多余的东西就可以了,我想知道的是错误的原因??错误那里说的是什么意思??谢谢~

你的编程习惯非常不好,竟然把C风格字符串和C++标准库的string混用,造成一批错误.

#include<iostream>
#include<string>
using namespace std;
class Student
{public:
Student(string nam,int a,string t)
{
name=nam;
age=a;
title=t;
}
//void display()
//{
// cout<<"name:"<<name<<endl;
// cout<<"age:"<<age<<endl;
// cout<<"title:"<<title<<endl;
//}
protected:
string name;
int age;
string title;
};
class Teacher
{public:
Teacher(string nam,char s,float sco)
{
name1 = nam;
sex=s;
score=sco;
}
//void display()
//{
// cout<<"name:"<<name1<<endl;
//cout<<"sex:"<<sex<<endl;
//cout<<"score:"<<score<<endl;
//}
protected:
string name1;
char sex;
float score;
};
class Graduate:public Student,public Teacher
{
public:
Graduate(string nam,int a,string t,char s,float sco,float w):Student(nam,a,t),Teacher(nam,s,sco),wage(w){} ;
void show(Graduate grad1)
{
cout<<"name:"<<grad1.name<<endl;
cout<<"age:"<<grad1.age<<endl;
cout<<"sex:"<<grad1.sex<<endl;
cout<<"score:"<<grad1.score<<endl;
cout<<"title:"<<grad1.title<<endl;
cout<<"wages:"<<grad1.wage<<endl;
}
private:
float wage;
};
int main()
{
Graduate grad1("wang-li",24,"assistant",'f',89.5,1234.5);
grad1.show(grad1);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-17
基本上把你所有的string定义都改成char*就可以了,其他都是些小问题,还有一些抄错。。。
#include <iostream>
using namespace std;

class Student
{
public:
Student(char* nam,int a,char* t)
{
name=nam;
age=a;
title=t;
}

void display()
{
cout << "name:"<< name<<endl;
cout << "age:"<< age<<endl;
cout << "title:"<< title<<endl;
}

protected:
char* name;
int age;
char* title;
};

class Teacher
{
public:
Teacher(char* nam,char s,float sco)
{
strcpy(name1,nam);
sex=s;
score=sco;
}
void display()
{
cout<<"name:"<<name1<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl;
}
protected:
char* name1;
char sex;
float score;
};

class Graduate:public Student,public Teacher
{
public:
Graduate(char* nam,int a,char* t,char s,float sco,float w):Student(nam,a,t),Teacher(nam,s,sco),wage(w){}
void show()
{
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl;
cout<<"title:"<<title<<endl;
cout<<"wages:"<<wage<<endl;
}
private:
float wage;
};

int main()
{
Graduate grad1("wang-li",24,"assistant",'f',89.5,1234.5);
grad1.show();
return 0;
}
第2个回答  2009-03-17
#include<iostream>

using namespace std;

class Student
{public:
Student(char* nam,int a,char* t)
{
name=nam;
age=a;
title=t;
}
void display()
{
cout<<"name:" <<name<<endl;
cout<<"age:" <<age<<endl;
cout<<"title:" <<title<<endl;
}
protected:
char* name;
int age;
char* title;
};
class Teacher
{
public:
Teacher(char* nam, char s,float sco)
{
name1 = nam;
// strcpy(name1, nam);
sex=s;
score=sco;}
void display()
{cout<<"name:"<<name1<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl;
}
protected:
char* name1;
char sex;
float score;
};

class Graduate:public Student,public Teacher
{
public:
Graduate(char* nam, int a, char* t, char s, float sco, float w): Student(nam,a,t),Teacher(nam,s,sco),wage(w){}
void show()
{
cout<<"name:"<<name<<endl;
cout<<"age:"<<age<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl;
cout<<"title:"<<title<<endl;
cout<<"wages:"<<wage<<endl;
}
private:
float wage;
};
int main()
{
Graduate grad1("wang-li",24,"assistant",'f',89.5,1234.5);
grad1.show();
return 0;
}
第3个回答  2009-03-17
好像不止两个错误,很多变量名都莫名奇怪的错了。比如sec=s; (这个应该是sex) ;Graduate(string nam,int a,string t,char s,float sco,float w):Student(nam,a,t),Teacher(nam,s,soc),wage(w){} (到底是soc还是sco?)
至于语法上的错误:源文件中使用string变量必须#include<iostream>
还有一个字符串的拷贝函数。。。(我也不太清楚)。
第4个回答  2009-03-17
加个头文件
#include <string>
还有一些其他的小错误自己改下
要么就是string类型的,要么就是数组类型的,不要两个混合用,很乱的
相似回答