编译结果为什么不同?
student.h中定义了virtual void display(ostream& out);
student.cpp中:
#include"student.h"
void Student::display(ostream& out)
{
out<<setiosflags(ios::left)<<setw(20)<<pName
<<uID<<","
<<setiosflags(ios::right)<<setw(4)<<grade;
}
ostream& operator<<(ostream& out, Student&st)
{
st.display(out);
out<<endl;
return out;
}
在my.cpp中,student.cpp中的函数体放在student.h时编译能得出正确的结果,而分开时,编译提示插入符右边的数不匹配。my.cpp中已有#include"student.h".
问题点数:100、回复次数:6Top
1 楼Kerrie()回复于 2000-10-16 10:34:00 得分 0
如果是在mfc的工程里添加的这两个文件,在student.cpp中添加#include "stdafx.h"然后试一下Top
2 楼CoolHg(苦听)回复于 2000-10-16 12:27:00 得分 50
我想你应该在*.h文件中定义一下ostream& operator<<(ostream& out, Student&st)的原型,最好在类中把它声明为友元,这样它就可以访问类的所有成员Top
3 楼dsx()回复于 2000-10-24 08:35:00 得分 0
kerrie的方法我试过不行,请问coolHg ostream& operator<<(ostream& out, Student&st)的原型是什么?Top
4 楼leer(白痴)回复于 2000-10-24 13:16:00 得分 50
在class Student{};中加入friend ostream& operator<<(ostream& out, Student&st);
既:
class Student{
//...
friend ostream& operator<<(ostream& out, Student&st);
}
就行了。
Top
5 楼dsx()回复于 2000-10-26 10:53:00 得分 0
谢谢leer的详尽回复,编译已通过。Top




