标题:帮小弟看一下,到底是那里出了问题?
只看楼主
Union
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-9-2
结帖率:0
已结贴  问题点数:10 回复次数:8 
帮小弟看一下,到底是那里出了问题?
我试了好久都有问题,编译不能通过,说无法访问point类中的a和c。望各位帮指正、
#include<iostream>
using namespace std;
class sh;
class point
{
private:
    int a;
public:
    int b;
    point(int pa,int pc)
    {
        a=pa;
        c=pc;
    }
    friend void sh::showp(point &);
protected:
    int c;
};
class sh
{
private:
    int s;
public:
    void showp(point &);
};
void sh::showp(point &bo)
{
    cout<<bo.a<<"\t"<<bo.c<<endl;
}
int main()
{
    point bo(29,89);
    bo.showp(bo);
    return 0;
}
搜索更多相关主题的帖子: private include public friend point 
2010-09-05 22:44
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
得分:1 
在class point 加个 friend class sh;
 friend void sh::showp(point &); 你想干什么?在类的模块里声明其他类的函数?
2010-09-06 10:41
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
得分:1 
friend void sh::showp(point &);
这个语句明显会出错。
因为class sh的定义不完整的时候,你不能够在另一类中涉及到它的细节。
你只能在前向引用的情况下,声明一个sh的对象的引用或者指针。绝对不能够涉及未完全定义的类的细节问题。否则编译必定报错。

南国利剑
2010-09-07 00:27
x_wangyue
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:34
专家分:144
注 册:2010-8-30
得分:1 
a属于private,b属于protected,在类外都不可以访问,所以编译报错
2010-09-09 21:52
dongfanliang
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2010-9-10
得分:1 
你这个有点混乱。。。。
2010-09-10 11:14
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
得分:1 
  很基本的定义问题。

翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
2010-09-10 18:29
hipwang88
Rank: 2
等 级:论坛游民
威 望:1
帖 子:23
专家分:36
注 册:2010-9-12
得分:1 
有点像鸡与蛋的问题,编程不规范
2010-09-12 22:06
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:1 
2楼说的很对

                                         
===========深入<----------------->浅出============
2010-09-12 22:25
C之家
Rank: 2
等 级:论坛游民
帖 子:12
专家分:32
注 册:2010-9-14
得分:0 
point bo(29,89);
    bo.showp(bo);
bo是point类的对象,而程序中sh是point的友员函数,这并不意味着point是sh的友员函数,所以bo不能访问showp函数,
friend void sh::showp(point &);
这句也有问题,虽然你在开头提前声明了类sh,但这里涉及到了sh的具体定义,除非是指针,否则不能这么使用
2010-09-15 21:35



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




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

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