#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;
}
static 를 쓰시거나
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; }클래스 B에서 A를
클래스 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
아 감사합니다.
static 으로 사용하면 그 클래스에서 공통의 변수로 하나 생기는 것이지요?
그렇다면..포인터 방법을 써야겠군요.
감사합니다. ^^
댓글 달기