C++ 从c++;
请注意,我正试图从私有访问说明符打印出嵌套类的值C++ 从c++;,c++,class,C++,Class,请注意,我正试图从私有访问说明符打印出嵌套类的值 #include <iostream> #include <cstdlib> using namespace std; class cal{ private: int a = 0; public: int setNum(int m){ a = m; } void getNum(){ cou
#include <iostream>
#include <cstdlib>
using namespace std;
class cal{
private:
int a = 0;
public:
int setNum(int m){
a = m;
}
void getNum(){
cout<<"the number is: "<<a<<endl;
}
class area{
public:
int setMan(int z){
cal obj;
obj.setNum(z);
return 1;
}
};
};
int main(){
cal::area obj2;
obj2.setMan(200);
cal obj3;
obj3.getNum();
'
return 0;
}
#包括
#包括
使用名称空间std;
类cal{
私人:
int a=0;
公众:
int setNum(int m){
a=m;
}
void getNum(){
cout定义嵌套类只提供嵌套类的定义。如果要拥有该类的成员,必须声明它:
struct cal {
struct area {}; // class definition
area m_area; // member
};
定义嵌套类仅为嵌套类提供定义。如果要拥有该类的成员,必须声明该成员:
struct cal {
struct area {}; // class definition
area m_area; // member
};
objectobj
是一个临时自动对象,当您从函数返回时会被销毁。顺便说一下,“set”函数不应该返回值,返回1会让人困惑
如果希望连接对象,可以考虑组合或聚合。例如:
// ...
class area{
public:
area(cal& obj) : obj(obj);
int setMan(int z){
obj.setNum(z);
return 1;
}
cal &obj;
};
// ...
int main(){
cal obj;
cal::area obj2(obj);
obj2.setMan(200);
obj.getNum();
return 0;
}
无论如何,这只是一个人工的例子,我看不出你把area
设置为嵌套类的原因,也看不到从area
将值设置为cal
的原因,等等
objectobj
是一个临时自动对象,当您从函数返回时会被销毁。顺便说一下,“set”函数不应该返回值,返回1会让人困惑
如果希望连接对象,可以考虑组合或聚合。例如:
// ...
class area{
public:
area(cal& obj) : obj(obj);
int setMan(int z){
obj.setNum(z);
return 1;
}
cal &obj;
};
// ...
int main(){
cal obj;
cal::area obj2(obj);
obj2.setMan(200);
obj.getNum();
return 0;
}
无论如何,这只是一个人工的例子,我看不出你把area
设置为嵌套类的原因,也看不到从area
将值设置为cal
的原因,等等