[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를 써주세요.
댓글 달기