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无用
悬赏问题
- ¥15 IAR程序莫名变量多重定义
- ¥15 (标签-UDP|关键词-client)
- ¥15 关于库卡officelite无法与虚拟机通讯的问题
- ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
- ¥15 目标检测项目无法读取视频
- ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
- ¥100 求采集电商背景音乐的方法
- ¥15 数学建模竞赛求指导帮助
- ¥15 STM32控制MAX7219问题求解答
- ¥20 在本地部署CHATRWKV时遇到了AttributeError: 'str' object has no attribute 'requires_grad'