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
};
object
obj
是一个临时自动对象,当您从函数返回时会被销毁。顺便说一下,“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
的原因,等等

object
obj
是一个临时自动对象,当您从函数返回时会被销毁。顺便说一下,“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
的原因,等等