考虑如下类:

class A {
    public:
    // code...

    private:
    class B {
        public:
        int aNum;
        // ...
    }
}


我要为A创建一些构造函数,例如:

A::A() { } // default...

A::A(int input) { /* code... */ }


所以我想知道如何访问aNum,因为它不是直接在A下。

最佳答案

正如某些注释所指出的,您不能仅仅从aNum中“访问” A,因为它是B的一部分。

您要么需要在B中创建一个A对象,然后在B对象中设置值,要么需要将aNumB移到A

如果在B中创建一个A对象,则外观将类似于以下内容。

struct A {
    A(int input) {
        bObj.aNum = input;
    }

    // ...

private:
    struct B {
        int aNum;
        // ...
    };

    B bObj;
};


如果您想直接从aNum访问它,则应该考虑A是否确实是嵌套类的一部分。在这种情况下,您的类设计很可能是错误的,并且aNum实际上是A而不是B的一部分。

10-07 20:20