标题:运算符重载困惑
只看楼主
kittel
Rank: 2
来 自:武汉
等 级:论坛游民
威 望:1
帖 子:38
专家分:73
注 册:2010-11-19
得分:0 
回复 10楼 pangding
Compiling...
f13.cpp
d:\c++admin\f13.cpp(29) : error C2593: 'operator <<' is ambiguous
执行 cl.exe 时出错.

f13.obj - 1 error(s), 0 warning(s)
私有数据的访问就是说,比如我定义的类中,作如下更改,其他不变
class Date {
   
        int year,month,day;
    public:
        int yearo() {return year;}
        int montho() {return month;}
        int dayo() {return day;}
        void set(int,int,int);
        void add();
        bool isrun();
       friend ostream& operator<<(ostream&,const Date&);
    };
调试结果如下:
-------------------Configuration: f13 - Win32 Debug--------------------
Compiling...
f13.cpp
D:\c++admin\f13.cpp(18) : error C2248: 'year' : cannot access private member declared in class 'Date'
        D:\c++admin\f13.cpp(5) : see declaration of 'year'
D:\c++admin\f13.cpp(18) : error C2248: 'month' : cannot access private member declared in class 'Date'
        D:\c++admin\f13.cpp(5) : see declaration of 'month'
D:\c++admin\f13.cpp(18) : error C2248: 'day' : cannot access private member declared in class 'Date'
        D:\c++admin\f13.cpp(5) : see declaration of 'day'
D:\c++admin\f13.cpp(29) : error C2593: 'operator <<' is ambiguous
执行 cl.exe 时出错.

f13.obj - 1 error(s), 0 warning(s)
但是钱能的书上这种对私有数据成员都是可以直接访问的。。
2010-12-01 09:25
qkhhss
Rank: 1
等 级:新手上路
帖 子:10
专家分:5
注 册:2010-11-11
得分:0 
没问题啊,我运行可以哪,连警告都有没有.
2010-12-01 09:55
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:5 
回复 11楼 kittel
诡异。我也觉得是你编译器的问题……
2010-12-01 16:45
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
得分:0 
不肯能有问题吧 是你们编译器太弱了?

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2010-12-03 21:36
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
得分:5 
回复 11楼 kittel
他是朋友 私有数据怎么可能有问题
你的编译器太弱了

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2010-12-03 21:43
li_danwang
Rank: 4
来 自:鄂州
等 级:业余侠客
帖 子:112
专家分:203
注 册:2010-11-12
得分:0 
#include<iostream>
using namespace std;


你把这个改成,
#include<iostream.h>就对了..

没事来C一下...   
2010-12-03 21:49
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
得分:0 
回复 10楼 pangding
朋友可以访问私有数据
程序代码:


#include<iostream>
using namespace std;

class abc
{
private:
    int a;
protected:
    int b;
    friend int geta(abc&);
};
int geta(abc& it)
{
    return it.a;
}
class abcd:public abc
{
public:
    int show(){return b;}
};
int main()
{
    abcd abcd1;
    cout<<abcd1.show();
    abc abc1;
    cout<<geta(abc1);
    getchar();
    return 1;
}




能运行吗


-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2010-12-03 22:02
cadypeng
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2010-12-4
得分:5 
回复 楼主 kittel
应该是你编译器问题。在vc6下可以运行。私有成员数据在有元函数是可以访问

如果改变了事情就尝试改变自己。
2010-12-04 14:18
cadypeng
Rank: 1
等 级:新手上路
帖 子:5
专家分:7
注 册:2010-12-4
得分:0 
回复 16楼 li_danwang
普通函数设置了友元函数当然是可以访问私有数据成员的

如果改变了事情就尝试改变自己。
2010-12-04 14:27
kittel
Rank: 2
来 自:武汉
等 级:论坛游民
威 望:1
帖 子:38
专家分:73
注 册:2010-11-19
得分:0 
回复 17楼 ml232528
能。
2010-12-04 20:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-327369-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.231312 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved