2012-08-14 3 views
0

을 변경 내가 형 바의 참조 변수 등과 같은 생성자와 클래스 푸 말해봐 C++ 클래스에 참조 변수를 설정하고 이후

Foo::Foo(Bar& b) : m_b(b) { 
} 

그리고 별도의 클래스에서

내가 가진 :

// global 
Bar b; 
Foo f(b); 

int main() { 
    b.setData();  // actually set some values... 
    f.m_b.showData(); // will it show the change? 
    return 0; 
} 
,536,

setData()가 호출 된 후 f의 참조 변수에도 해당 데이터가 변경됩니까? 참조 변수 (초기화 중에 설정해야 함)가있는 클래스가 있기 때문에이 해결 방법을 시도하고 있지만 전역 액세스 가능 (실제로 Bar에 데이터를 설정하기 전에 선언해야 함)해야합니다.

+0

주제를 조금 벗어나지 만 참조 변수를 포함하는 전역 적으로 사용 가능한 클래스는 우스운 냄새가납니다. 전역을 피할 수 없다면 const가 아닌 참조로 만들고 f.setData() 만 사용할 수 있습니까? – Zero

답변

1

예. f.mbb은 모두 동일한 개체를 나타냅니다.

+0

감사! 이 프로그램이 훨씬 더 큰 프로그램의 일부이므로이 작업을 확실히하고 싶었습니다. – Aaron

1

예. 참조는 별칭 일뿐입니다. f::m_bb은 정확히 동일한 개체 인 입니다.

+0

설명해 주셔서 감사합니다! – Aaron

관련 문제