class A의 멤버로 class B가 있습니다. B에서 A의 멤버를 참조하는 방법을 잘 모르겠습니다.

uribery의 이미지

안녕하세요.

class A
{
public:

int a;
class B
{
int Get();

}

}

여기에서 B의 멤버함수인 Get에서
A의 멤버변수는 a를 참조하고 싶습니다.
어떤 방식을 사용해야할까요?

좋은 하루 보내세요. ^^

익명사용자의 이미지

static 를 쓰시거나 멤버 변수에 포인터를 하나 추가하세요.

#include <iostream>
 
class A {
public:
    static int a_;
 
    class B {
    public:
        static int get_a() {
            return A::a_;
        }
    };
};
 
class C {
public:
    C()
        : c_(1989)
    {}
 
    int c_;
 
    class D {
    public:
        D(C& c)
            : rc_(c)
        {}
 
        int get_c() {
            return rc_.c_;
        }
 
    private:
        C& rc_;
    };
};
 
int A::a_ = 1990;
 
int main()
{
    std::cout << A::B::get_a() << "\n";
 
    C instance_c;
    C::D instance_d(instance_c);
 
    std::cout << instance_d.get_c() << "\n";
 
    return 0;
}
unipro의 이미지

클래스 B에서 A를 가르키는 포인터를 하나 사용하세요.

class A
{
public:
    int a;
 
    class B
    {
        friend class A;
 
        A *parent;
 
        B(A *p) : parent(p) {}
        int Get() { 
            parent->a++;
        }
    };
    B b;
 
    A() : b(this) {}
};

애고고... 밑에 답변이 있었네요.

내 블로그: http://unipro.tistory.com

uribery의 이미지

static 으로 사용하면 그 클래스에서 공통의 변수로 하나 생기는 것이지요?
그렇다면..포인터 방법을 써야겠군요.
감사합니다. ^^