嵌套类如何调用外围类的函数? class A{public: A(); class B { public: B(); DoB(); }; DoA() {...}};A::B::DoB(){ ... DoA(); //????????????????应该怎么调用阿} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一种办法: 让DoA成为静态函数,然后使用 A::DoA()来调用另一种办法: 在DoB()中使用A类对象的指针,然后调用 objA->DoA(); 一、在嵌套类中保存一个外层类对象的指针。二、生命嵌套类为外层类的友员。三、声明一个嵌套类变量。四、初始化这个变量class A{public: A():embedded(this) { } class B { public: B(A pOuter) { outer=pOuter; } DoB(); A* outer; }; DoA() {...} friend B;//A 可以访问B};A::B::DoB(){ outer->DoA();} friend B;//A 可以访问B????是b可以访问A 如果是访问外围类的public成员,你可以让嵌套类拥有一个外围类的指针,并通过这个指针来调用如果访问私有成员,需要声明为friend同意 ruihuahan(飞不起来的笨鸟) 的做法 ruihuahan(飞不起来的笨鸟),的程序解释有误,class A{friend B ; }声明B是A的友元,是B可以访问A的所有成员,而不是A可以访问B; class A{public: A():embedded(this) { } class B { public: B() DoB(); }; DoA() {...} friend B:DoB();};A::B::DoB(){ A:DoA();} 嵌套类不能直接访问其外围类的非静态成员。任何对外围类的非静态成员的访问都要求通过外围类的指针,引用或对象来完成。这个是《C++ Primer 中文版》555页上的话,还有例子去看看吧 class A{public: A():embedded(this) { } class B { public: B() DoB(A*); }; DoA() {...} friend B:DoB(A*);};A::B::DoB(A* a){ a->DoA();} 多线程中使用SqLite3的问题。 终于工作了,散分 高手急救!!DirectX编程中遇到的问题 求助!! 关于 ole 文档的问题, 研究了很久 也没有弄出来 如何枚举网络打印机 有谁知道 怎样在DIALOG中播放FLASH 啊? 关于vc与fortran混合编程 手把手教你做背单词软件 要存储一个含有9个字符的字符串,要申请几个字节的char数组?9个还是10个? 有人用研华pcl-836做过电机测速吗? 如何在Atl开发的组件接口中合理传递CObArray等数组参数? 关于键盘钩子的简单问题
另一种办法: 在DoB()中使用A类对象的指针,然后调用 objA->DoA();
二、生命嵌套类为外层类的友员。
三、声明一个嵌套类变量。
四、初始化这个变量
class A
{
public:
A():embedded(this)
{ }
class B
{
public:
B(A pOuter)
{
outer=pOuter;
}
DoB();
A* outer; };
DoA()
{...}
friend B;//A 可以访问B
};A::B::DoB()
{
outer->DoA();
}
是b可以访问A
你可以让嵌套类拥有一个外围类的指针,
并通过这个指针来调用如果访问私有成员,需要声明为friend同意 ruihuahan(飞不起来的笨鸟) 的做法
class A
{
friend B ;
}
声明B是A的友元,是B可以访问A的所有成员,而不是A可以访问B;
{
public:
A():embedded(this)
{ }
class B
{
public:
B()
DoB();
};
DoA()
{...}
friend B:DoB();
};A::B::DoB()
{
A:DoA();
}
这个是《C++ Primer 中文版》555页上的话,还有例子
去看看吧
{
public:
A():embedded(this)
{ }
class B
{
public:
B()
DoB(A*);
};
DoA()
{...}
friend B:DoB(A*);
};A::B::DoB(A* a)
{
a->DoA();
}