c++ 모듈화 프로그래밍 중 상수화를 통한 switch 질문이요~

hyoungju의 이미지

안녕하세요 ~
---------------------------------------
헤더파일 aaaaaa.h
---------------------------------------
#include[iostream] <<------ 보이지 않아 이렇게 표기 했습니다.
#include[stdio.h]

class aaa{
public:
static const int pipe;
};

void cccc();

----------------------------------------
Main.cpp
---------------------------------------
#include"aaaaa.h"

const int aaa::pipe =1;

void main(){


switch(1)
case aaa::pipe:
printf("???");

cccc();
}

-----------------------------------------------
dddd.cpp
-----------------------------------------------
#include"aaaaa.h"

void cccc(){
int a = 1;
switch(a)
{

case aaa::pipe : // 에러 부근 !!!

}
printf("%d",aaa::pipe);

}
--------------------------------------------------------
질문 1>
단일 프로그래밍을 할때는 정상적으로 출력이 되어 지는데
모듈화를 시켜서 프로그래밍을 짜면 case 부근에서 에러가 발생합니다.
모듈화를 잘못 했나 하고~ printf("%d",aaa::pipe); 문으로는 잘 출력이 되는데 왜 그런건가요??

질문2>
만약에 위의 구문이 문법적으로 안되는 것이라면..
#define 으로 전역 적으로 상수화 시키는법 말고 다른 좋은 방법이 있을까요??
enum 도 사용해보았는데 enum은 범위나 컴파일러의 호환성등 문제의 소지가 있다고 해서 생략 했습니다.
inline 함수로 짜는방법도 있겠지만 변수 처럼 사용하고 싶어서요..
개발자님들께서는 주로 어떠한 방법으로 class 안에 변수를 상수화 시켜 이용하시나요??