求高手指点,怎么破,是编译出错 5
#include"xjxt.h"classstu{charname;intnumber;intage;charsex;chardepartment;public:stu(...
#include"xjxt.h"
class stu
{
char name;
int number;
int age;
char sex;
char department;
public:
stu (void){};
~stu (void){};
friend ostream &operator<<(ostream & os,stu & s);
friend istream &operator>>(istream & is,stu & s);
stu & operator =(stu&o)
{
name=o.name;
number=o.number;
age=o.age;
sex=o.sex;
department=o.department;
return *this;
}
stu operator++();
stu operator++(int);
bool operator==(stu);
};
ostream &operator<<(ostream & os,stu & s)
{
return os<<s.number<<':'<<s.name<<':'<<s.sex<<':'<<s.age<<':'<<s.department<<'\n';
}
istream &operator>>(istream & is,stu & s)
{
cout<<"学号";
is>>s.number;
return is;
cout<<"姓名";
is>>s.name;
return is;
cout<<"性别";
is>>s.sex;
return is;
cout<<"年龄";
is>>s.age;
return is;
cout<<"系";
is>>s.department;
return is;
}
template<class T>
int xjxt<T>::Search(T&x)const
{
for(int i=0;i<=last;i++)
if(data[i]==x)return i+1;
return 0;
}
template <class T>
bool xjxt<T>::Insert(int i,T&x)//插入
{
if (last==maxSize-1) return false;
if (i<0||i>last+1) return false;
for(int j=last;j>=i;j--)
data[j+1]=data[j];
data[i]=x;
last++;
return true;
}
template <class T>//删除
bool xjxt<T>::Remove(int i,T&x)
{
if(last==-1)return false;
if(i<1||i>last+1)return false;
for(int j=i;j<=last;j++)
data[j-1]=data[j];
last--;
return true;
}
void _tmain(int argc, _TCHAR* argv[])
{
xjxt<stu>o;
cout<< " ""学生成绩管理系统"" "<<endl;
cout<<endl;
cout<< "1.添加学生信息"<<endl;
cout<< "2.查找学生信息"<<endl;
cout<< "3.删除学生信息"<<endl;
cout<< "4.修改学生信息"<<endl;
cout<< "5.退出学生系统"<<endl;
int i;
cout<<"请选择一个操作(1-5):";
cin>>i;
if(i==1)
cout<<"请输入学生姓名,学号,年龄"<<endl;
if(i==2)
cout<<"请输入学号:"<<endl;
stu x;
cin >> i;
cin >> x;
o.Insert(i,x);
o.Remove(i,x);
o.Search(x);
o.setData(i,x);
o.getData(i,x);
}
错误 2 error LNK2019: 无法解析的外部符号 "public: __thiscall xjxt<class stu>::xjxt<class stu>(int)" (??0?$xjxt@Vstu@@@@QAE@H@Z),该符号在函数 _wmain 中被引用 学籍管理.obj 学籍管理系统
错误 3 error LNK2019: 无法解析的外部符号 "public: bool __thiscall stu::operator==(class stu)" (??8stu@@QAE_NV0@@Z),该符号在函数 "public: int __thiscall xjxt<class stu>::Search(class stu &)const " (?Search@?$xjxt@Vstu@@@@QBEHAAVstu@@@Z) 中被引用 学籍管理.obj 学籍管理系统
错误 4 fatal error LNK1120: 2 个无法解析的外部命令 E:\信创数据库\学籍管理系统\Debug\学籍管理系统.exe 学籍管理系统 展开
class stu
{
char name;
int number;
int age;
char sex;
char department;
public:
stu (void){};
~stu (void){};
friend ostream &operator<<(ostream & os,stu & s);
friend istream &operator>>(istream & is,stu & s);
stu & operator =(stu&o)
{
name=o.name;
number=o.number;
age=o.age;
sex=o.sex;
department=o.department;
return *this;
}
stu operator++();
stu operator++(int);
bool operator==(stu);
};
ostream &operator<<(ostream & os,stu & s)
{
return os<<s.number<<':'<<s.name<<':'<<s.sex<<':'<<s.age<<':'<<s.department<<'\n';
}
istream &operator>>(istream & is,stu & s)
{
cout<<"学号";
is>>s.number;
return is;
cout<<"姓名";
is>>s.name;
return is;
cout<<"性别";
is>>s.sex;
return is;
cout<<"年龄";
is>>s.age;
return is;
cout<<"系";
is>>s.department;
return is;
}
template<class T>
int xjxt<T>::Search(T&x)const
{
for(int i=0;i<=last;i++)
if(data[i]==x)return i+1;
return 0;
}
template <class T>
bool xjxt<T>::Insert(int i,T&x)//插入
{
if (last==maxSize-1) return false;
if (i<0||i>last+1) return false;
for(int j=last;j>=i;j--)
data[j+1]=data[j];
data[i]=x;
last++;
return true;
}
template <class T>//删除
bool xjxt<T>::Remove(int i,T&x)
{
if(last==-1)return false;
if(i<1||i>last+1)return false;
for(int j=i;j<=last;j++)
data[j-1]=data[j];
last--;
return true;
}
void _tmain(int argc, _TCHAR* argv[])
{
xjxt<stu>o;
cout<< " ""学生成绩管理系统"" "<<endl;
cout<<endl;
cout<< "1.添加学生信息"<<endl;
cout<< "2.查找学生信息"<<endl;
cout<< "3.删除学生信息"<<endl;
cout<< "4.修改学生信息"<<endl;
cout<< "5.退出学生系统"<<endl;
int i;
cout<<"请选择一个操作(1-5):";
cin>>i;
if(i==1)
cout<<"请输入学生姓名,学号,年龄"<<endl;
if(i==2)
cout<<"请输入学号:"<<endl;
stu x;
cin >> i;
cin >> x;
o.Insert(i,x);
o.Remove(i,x);
o.Search(x);
o.setData(i,x);
o.getData(i,x);
}
错误 2 error LNK2019: 无法解析的外部符号 "public: __thiscall xjxt<class stu>::xjxt<class stu>(int)" (??0?$xjxt@Vstu@@@@QAE@H@Z),该符号在函数 _wmain 中被引用 学籍管理.obj 学籍管理系统
错误 3 error LNK2019: 无法解析的外部符号 "public: bool __thiscall stu::operator==(class stu)" (??8stu@@QAE_NV0@@Z),该符号在函数 "public: int __thiscall xjxt<class stu>::Search(class stu &)const " (?Search@?$xjxt@Vstu@@@@QBEHAAVstu@@@Z) 中被引用 学籍管理.obj 学籍管理系统
错误 4 fatal error LNK1120: 2 个无法解析的外部命令 E:\信创数据库\学籍管理系统\Debug\学籍管理系统.exe 学籍管理系统 展开
展开全部
很显然楼主的"xjxt.h"是可以正常加载的,这都是报的链接错误!
楼主是模版类,仔细检查头文件中关于构造函数、==操作符有没有定义?注意是定义!!如果没有就加上!
楼主是模版类,仔细检查头文件中关于构造函数、==操作符有没有定义?注意是定义!!如果没有就加上!
追问
求具体程序,谢谢了,我在外部,里面重载了但还是报错
追答
能把代码文件全部上传上来么?或者放到云盘里面给个链接,你光是这么说我也不能确定问题在哪。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询