编译器说找不到类。怎么办?请大家帮帮我吧。
因为我里面用到了友元函数,说以在VC++中用文件用#include<iostream.h> ,并把using namespace std;去掉
#include<iostream.h> #include<string>#include <iomanip>class Teacher{public: Teacher(string nam,int Age,int Sex,char *Department,char *phone,string title1); ~Teacher( ); void display();protected: string name; int m_nAge; int m_nSex;//0:women,1:man char *m_szDepartment; char *m_phone; string title;};Teacher::Teacher(string nam,int Age,int Sex,char *Department,char *phone,string title1){ name=nam; m_nAge=Age; m_nSex=Sex; m_szDepartment=new char[strlen(Department)+1]; //此处的处理是个重点,处理不好,会在程序中植入非常严重且隐蔽性极强的"定时炸弹" strcpy(m_szDepartment,Department); m_phone=new char[strlen(phone)+1]; //此处的处理是个重点,处理不好,会在程序中植入非常严重且隐蔽性极强的"定时炸弹" strcpy(m_phone,phone); title=title1; }Teacher::~Teacher() { delete [] m_szDepartment; delete [] m_phone; } void Teacher::display(){ cout << setiosflags(ios :: left) << setw(6) <<name<< setw(20) <<m_nAge << setw(8)<<((m_nSex==0)?"women":"man")<<setw(11)<<m_szDepartment<<setw(11)<<title1<<setw(11)<<m_phone; } class Cadre{public: Cadre(string nam,int Age,int Sex,char *Department,char *phone,string post1) ; ~Cadre( ); protected: string name; int m_nAge; int m_nSex;//0:women,1:man char *m_szDepartment; char *m_phone; string post;};Cadre::Cadre(string nam,int Age,int Sex,char *Department,char *phone,string post1){ name=nam; m_nAge=Age; m_nSex=Sex; m_szDepartment=new char[strlen(Department)+1]; //此处的处理是个重点,处理不好,会在程序中植入非常严重且隐蔽性极强的"定时炸弹" strcpy(m_szDepartment,Department); m_phone=new char[strlen(phone)+1]; //此处的处理是个重点,处理不好,会在程序中植入非常严重且隐蔽性极强的"定时炸弹" strcpy(m_phone,phone); post=post1;}Cadre::~Cadre() { delete [] m_szDepartment; delete [] m_phone; } class Teacher_Cadre:public Teacher,public Cadre{public: Teacher_Cadre(string nam,int Age,int Sex,char *Department,char *phone,string title1,string post1,string wages1) ; ~Teacher_Cadre( ); void show(); friend ostream & operator<<(ostream &,const Teacher_Cadre &);//重载运算符"<<" protected: string name; int m_nAge; int m_nSex;//0:women,1:man char *m_szDepartment; char *m_phone; string wages;};Teacher_Cadre::Teacher_Cadre(string nam,int Age,int Sex,char *Department,char *phone,string title1,string post1,string wages1):Teacher(nam,Age,Sex,*Department,*phone,title1),Cadre(nam,Age,Sex,*Department,*phone,post1),wages(wages1){}Teacher_Cadre::~Teacher_Cadre() { delete [] m_szDepartment; delete [] m_phone; }void Teacher_Cadre::show(){ display();}ostream & operator<<(ostream &output,const Teacher_Cadre &p) { output<<"工资为:"; output<<<<p.wages<<endl; output<<"职务为:"; output<<<<p.title1<<endl; return output; } int main( ){ char name[10],post[19],department[10]; int sex,age; float salary; cout<<"input Teacher_Cadre's name,Age,sex(0:women,1:man),age,department,post,wages:\n"; cin>>name>>Age>>sex>>age>>department>>post>>wages; Teacher_Cadre Teacher_Cadre1(name,Age,sex,age,department,post,wages); Teacher_Cadre1.Show(); cout<<Teacher_Cadre1; return 0;}
#include<iostream.h>#include<string>#include <iomanip>class Teacher{ public: Teacher(string nam, int Age, int Sex, char* Department, char* phone, string title1); ~Teacher(); void display(); protected: string name; int m_nAge; int m_nSex;//0:women,1:man char* m_szDepartment; char* m_phone; string title;};Teacher::Teacher(string nam, int Age, int Sex, char* Department, char* phone, string title1){ name = nam; m_nAge = Age; m_nSex = Sex; m_szDepartment = new char[strlen(Department)+1]; //此处的处理是个重点,处理不好,会在程序中植入非常严重且隐蔽性极强的"定时炸弹" strcpy(m_szDepartment, Department); m_phone = new char[strlen(phone)+1]; //此处的处理是个重点,处理不好,会在程序中植入非常严重且隐蔽性极强的"定时炸弹" strcpy(m_phone, phone); title = title1;}Teacher::~Teacher(){ delete [] m_szDepartment; delete [] m_phone;}void Teacher::display(){ cout << setiosflags(ios :: left) << setw(6) << name << setw(20) << m_nAge << setw(8) << ((m_nSex == 0) ? "women" : "man") << setw(11) << m_szDepartment << setw(11) << title << setw(11) << m_phone;}class Cadre{ public: Cadre(string nam, int Age, int Sex, char* Department, char* phone, string post1) ; ~Cadre(); protected: string name; int m_nAge; int m_nSex;//0:women,1:man char* m_szDepartment; char* m_phone; string post;};Cadre::Cadre(string nam, int Age, int Sex, char* Department, char* phone, string post1){ name = nam; m_nAge = Age; m_nSex = Sex; m_szDepartment = new char[strlen(Department)+1]; //此处的处理是个重点,处理不好,会在程序中植入非常严重且隐蔽性极强的"定时炸弹" strcpy(m_szDepartment, Department); m_phone = new char[strlen(phone)+1]; //此处的处理是个重点,处理不好,会在程序中植入非常严重且隐蔽性极强的"定时炸弹" strcpy(m_phone, phone); post = post1;}Cadre::~Cadre(){ delete [] m_szDepartment; delete [] m_phone;}class Teacher_Cadre: public Teacher, public Cadre{ public: Teacher_Cadre(string nam, int Age, int Sex, char* Department, char* phone, string title1, string post1, string wages1) ; ~Teacher_Cadre(); void show(); friend ostream& operator<<(ostream &, const Teacher_Cadre &);//重载运算符"<<" protected: string name; int m_nAge; int m_nSex;//0:women,1:man char* m_szDepartment; char* m_phone; string wages;};Teacher_Cadre::Teacher_Cadre(string nam, int Age, int Sex, char* Department, char* phone, string title1, string post1, string wages1): Teacher(nam, Age, Sex, Department, phone, title1), Cadre(nam, Age, Sex, Department, phone, post1), wages(wages1) {}Teacher_Cadre::~Teacher_Cadre(){ delete [] m_szDepartment; delete [] m_phone;}void Teacher_Cadre::show(){ display();}ostream& operator<<(ostream& output, const Teacher_Cadre& p){ output << "工资为:"; output << p.wages << endl; output << "职务为:"; output << p.title << endl; return output;}int main(){ char name[10], post[19], department[10]; string wages; int sex, age,Age; float salary; cout << "input Teacher_Cadre's name,Age,sex(0:women,1:man),age,department,post,wages:\n"; cin >> name >>Age >> sex >> age >> department >> post >> wages; Teacher_Cadre Teacher_Cadre1(name, Age, sex, department, "","",post, wages); Teacher_Cadre1.show(); cout << Teacher_Cadre1; return 0;}
[解决办法]
头文件少了.
#include<string>
[解决办法]
算了.
直说吧:扔掉vc6.0.
用 iostream,用 using namespace std.
[解决办法]
用vc6.0出的问题就没必要纠结了
[解决办法]