c++A类的私有嵌套一个B类,那在主函数中怎么创建这个B类的对象啊
4条回答 默认 最新
- 技术专家团-小桥流水 2022-03-21 14:06关注
在A类内嵌套一个B类,说明这个B类的作用域只在A类内,在main函数中是无法创建B类的对象的。在main函数中创建B的对象会报错“未定义的标识符”。如下:
如果想要在main函数中创建类B的对象,就把B改成public,方法如下:
#include <iostream> using namespace std; class A { public: void show() { cout << "A" << endl; } public: //这里声明为public class B { private: int mNmb; public: void setNmb(int n) { mNmb = n; } int getNmb() { return mNmb; } }; B m_b; }; int main() { A::B bb; bb.setNmb(2); return 0; }
另一种方法就是使用友元函数,把main函数声明为A的友元函数。
#include <iostream> using namespace std; class A { public: friend int main(); void show() { cout << "A" << endl; } private: class B { private: int mNmb; public: void setNmb(int n) { mNmb = n; } int getNmb() { return mNmb; } }; B m_b; }; int main() { A::B bb; bb.setNmb(2); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 数学建模,尽量用matlab回答,论文格式
- ¥15 昨天挂载了一下u盘,然后拔了
- ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
- ¥20 易康econgnition精度验证
- ¥15 msix packaging tool打包问题
- ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
- ¥15 python的qt5界面
- ¥15 无线电能传输系统MATLAB仿真问题
- ¥50 如何用脚本实现输入法的热键设置
- ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能