友元函数不能直接访问私有变量,这与C++标准不一致。因此在如要使用友元函数必须定义get函数,返回私有成员变量.
或者把private 声明为 public吧、、、、、
貌似得提前声明!!!!!!于是将程序进行了改动,改过后如下:
传统写法:
:
class CA;
ostream &operator<<(ostream &output,CA &ca);
class CA
{
public:
CA(){}
CA(string n,int a):name(n),age(a){}
friend ostream &operator<<(ostream &output,CA &ca);
private:
string name;
int age;
};
inline ostream &operator<<(ostream &output,CA &ca){
return output<<"name:"<<ca.name<<endl<<"age:"<<ca.age<<endl;
}
int main()
{
CA cc("test",1);
cout<<cc<<endl;
return 0;
}
|
vc 提示:
error C2593: 'operator <<' is ambiguous
执行 cl.exe 时出错.
改过后的程序不再有错了。他们都说VC 6.0 在SP3之前, 对iostream与friend有Bug, 需要patch----SP5。可能这样的错误与编译器有关吧。
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class CA
{
public:
CA(){}
CA(string n,int a):name(n),age(a){}
friend ostream &operator<<(ostream &output,CA &ca);
private:
string name;
int age;
};
inline ostream &operator<<(ostream &output,CA &ca){
return output<<"name:"<<ca.name<<endl<<"age:"<<ca.age<<endl;
}
int main()
{
CA cc("luckydog",1);
cout<<cc<<endl;
return 0;
}
|
有时我们必须迁就我们的平台。唉。
现在又一个错误
c:\documents and settings\administrator\桌面\complex\algorithm.cpp(112) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Generating Code...
阅读(1266) | 评论(0) | 转发(0) |