2014-12-24 3 views
0

C++ 표준에서 네임 스페이스의 범위 밖에있는 네임 스페이스의 가변 멤버를 정의하는 방법은 extern을 사용하는 것입니다 가변 멤버의 선언에서 지정자? 네임 스페이스의 범위 밖에있는 네임 스페이스의 가변 멤버 정의

§3.4.1/14

이 "EN 김에"언급 :

네임 스페이스의 가변 부재이어서 그 공간의 정의에 나타나는 이름의 범위 밖에 정의되면 구성원 (선언자 -id 다음)은 해당 멤버가 해당 네임 스페이스에서 발생한 의 정의처럼 검색됩니다. [실시 예 : 그것은 extern 지정자 (7.1.1)를 포함 ... 않는

namespace N { 
int i = 4; 
extern int j; 
} 
int i = 2; 
int N::j = i; // N::j == 4 
+2

** 3.1/2 **는 'extern'이 정의가 아닌 변수 선언을 만드는 방법을 설명합니다. 이 선언은 전역 여부에 관계없이이 선언이 발생하는 네임 스페이스에 관계없이 적용됩니다. –

답변

5

3.1/2 선포

extern

는 무관 ... 정의이고 네임 스페이스와 관련이 있습니다. 정의가 아닌 변수 선언을 만드는 방법 일뿐입니다. 그런 다음 네임 스페이스 내부 또는 외부에서 별도의 정의를 제공하도록 선택할 수 있습니다.

관련 문제