VC6中关于友元函数的bug的处理方法?(有源代码)这是VC中的BUG,该怎样修改?C/C++ code#include iostreamus
VC6中关于友元函数的bug的处理方法?(有源代码)
这是VC中的BUG,该怎样修改?
- C/C++ code
#include <iostream>using namespace std;class date;class time{public: time(int h,int m,int s):hour(h),minute(m),sec(s){} friend void display(date &,time &);private: int hour; int minute; int sec; };class date{public: date(int m,int d,int y):month(m),day(d),year(y){} friend void diaplay(date &,time &);private: int month; int day; int year;}; void display(date &d,time &t){cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;cout<<d.year<<":"<<d.month<<":"<<d.day<<endl;}int main(){date d1(12,25,2004); time t1(10,13,56); display(d1,t1); return 0;}--------------------Configuration: Cpp4 - Win32 Debug--------------------
Compiling...
Cpp4.cpp
C:\Documents and Settings\ITplayer\c++调试\Cpp4.cpp(29) : error C2248: 'year' : cannot access private member declared in class 'date'
C:\Documents and Settings\ITplayer\c++调试\Cpp4.cpp(23) : see declaration of 'year'
C:\Documents and Settings\ITplayer\c++调试\Cpp4.cpp(29) : error C2248: 'month' : cannot access private member declared in class 'date'
C:\Documents and Settings\ITplayer\c++调试\Cpp4.cpp(21) : see declaration of 'month'
C:\Documents and Settings\ITplayer\c++调试\Cpp4.cpp(29) : error C2248: 'day' : cannot access private member declared in class 'date'
C:\Documents and Settings\ITplayer\c++调试\Cpp4.cpp(22) : see declaration of 'day'
Error executing cl.exe.
Cpp4.obj - 3 error(s), 0 warning(s)
[解决办法]
#include <iostream>
using namespace std;
改为
#include<iostream.h>试哈
[解决办法]
class date
{
public:
date(int m,int d,int y):month(m),day(d),year(y){}
friend void diaplay(date &,time &);这里搞错了
private:
int month;
int day;
int year;
};
[解决办法]
这个问题我也遇到过,可进行如下修改:
#include <iostream>
using namespace std;
改为:
#include <iostream.h>
即:更改命名空间,并将库改为C语言形式的库,而非标准C++的库.
另外,我试过打补丁的方法,没行通,不知道怎么回事.
[解决办法]
还可以这样:
- C/C++ code
#include <iostream>using namespace std;class date;class time;void display(date &,time &);//将要用的友元函数前向声明一下就行.//原始代码中有个地方的display拼错.class time{public: time(int h,int m,int s):hour(h),minute(m),sec(s){} friend void display(date &,time &);private: int hour; int minute; int sec; };class date{public: date(int m,int d,int y):month(m),day(d),year(y){} friend void display(date &,time &);private: int month; int day; int year;};void display(date &d,time &t){ cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl; cout<<d.year<<":"<<d.month<<":"<<d.day<<endl;}int main(){ date d1(12,25,2004); time t1(10,13,56); display(d1,t1); return 0;} 