[C++] 네임스페이스 질문!
글쓴이: gurumong / 작성시간: 금, 2010/06/11 - 1:16오전
제가 가진 책의 예제코드를 참조해서 컴파일 가능한 코드를 짰는데요
책의 설명대로라면 main함수내에서 참조하는 f는 네임스페이스 A에서 선언한 변수여야하는데
실제 컴파일에서는 에러가 나더라구요
책이 잘못된 것일까요?
#include <iostream> namespace A { double f; // ★ } char f; // ★ int main() { using namespace A; std::cin >> f; // ★ std::cout << f << std::endl; }
$ g++ -Wall -W -o ex ex.cpp ex.cpp: In function `int main()': ex.cpp:12: error: `f' undeclared (first use this function) ex.cpp:12: error: (Each undeclared identifier is reported only once for each function it appears in.)
실제 책의 코드 입니다.
namespace Jill { double bucket(double n) { ... } double fetch; // ★ struct Hill { ... }; } char fetch; // ★전역 이름 공간 int main() { using namespace Jill; // 그 이름 공간의 모든 이름을 불러 온다 Hill Thrill; // Jill::Hill 구조체를 생성한다 double water = bucket(2); // Jill::bucket();를 사용한다 double fetch; // ★허용된다, Jill::fetch를 가린다 << 의심스러운 부분!!! cin >> fetch; // 값을 지역 fetch에 저장한다 cin >> ::fetch; // 값을 전역 fetch에 저장한다 cin >> Jill::fetch; // 값을 Jill::fetch에 저장한다 ... }
Forums:
컴파일러가 메인
컴파일러가 메인 안에서 어떤 f를 써야 할지 알 수 없어서 발생하는 문제입니다. 이름공간 A 안의 f를 쓴다면 A::f를, 전역변수 f를 사용한다면 ::f를 써주세요.
댓글 달기