Chinaunix首页 | 论坛 | 博客
  • 博客访问: 23865
  • 博文数量: 13
  • 博客积分: 501
  • 博客等级: 下士
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-30 07:53
文章分类

全部博文(13)

文章存档

2011年(1)

2010年(1)

2009年(11)

我的朋友

分类: C/C++

2010-01-16 01:22:17

   友元函数不能直接访问私有变量,这与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...







阅读(1216) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~