免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1991 | 回复: 4
打印 上一主题 下一主题

无法访问友员类的数据成员。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-16 11:29 |只看该作者 |倒序浏览
#include <iostream>
using namespace std;

class A
{
public:
    void testa(){cout<<"in A"<<endl; };
};

class B
{
protected:
    int b;

public:
    class AA : public A
    {
    public:
        void testaa(){ b=1; };
    }m_AA;

    B(int bb) { b=bb; }

    friend class AA;
};

int main() {

    B b1(10);
    b1.m_AA.testaa();

    return 0;
}


编译报错:
../src/testcc.cpp: In member function `void B::AA::testaa()':
../src/testcc.cpp:27: error: invalid use of nonstatic data member 'B::b'

论坛徽章:
0
2 [报告]
发表于 2009-10-16 11:38 |只看该作者
B知道他自己内部有个AA类型的m_AA,但m_AA本身可不知道他自己是属于哪个B,而且也有可能不属于B属于另外一个类的了,这是怎么访问B的东西呢?
还是老老实实在构造函数或者Init函数里面把B的指针传进去。

论坛徽章:
1
午马
日期:2013-08-23 23:39:47
3 [报告]
发表于 2009-10-16 11:39 |只看该作者
友元没有这么用的吧

论坛徽章:
0
4 [报告]
发表于 2009-10-16 11:45 |只看该作者
奇怪,,既然是友元,就应该可以访问。。这个语意很诡异。。

论坛徽章:
0
5 [报告]
发表于 2009-10-16 13:05 |只看该作者
压根就不是友元的问题。
是this指针类型!
估计LZ以前要么使用java要么使用C#的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP