저는 컴파일 타임 후에 수정할 수없는 클래스와 관련된 고유 ID와 같은 상수 필드가있는 기본 클래스를 갖고 싶습니다. 지금까지 static const
선언은 괜찮습니다. 자,이 기본 클래스를 상속 받고이 클래스의 자식이 동일한 필드를 갖지만 자신의 값을 갖고 있는지 확인하고 싶습니다. 어떻게해야합니까? C++ 클래스에서 가상 정적 상수 값을 선언 할 수 있습니까?
A
,
B
및
C
을하고 싶습니다, 내가 그런 0의
int
값을 유지하는
ID
필드
Base
라는 기본 클래스를 가지고 싶습니다의 말합시다
Base
의 공용 어린이들과 나는이 어린이들이 1, 2, 3의 각각의 값을 갖는
ID
필드를 가질 것이라고 확신하고 싶다. ('make'에 의해 컴파일러 오류를 얻는 것과 같은 것을 의미한다. ID가 명시 적으로 선언되어 있음). 나는이 시나리오를 구축 관리 할 수 있다면
, 내 기대는
Base*
포인터의
ID
필드를 요청, 내가 포인터가
new A()
,
new B()
또는
new C()
으로 생성 여부에 따라 다른 값을 얻을해야한다는 것입니다.
내 생각에 ID
을 virtual static const
으로 선언하는 것은 당연 하겠지만 당연히 이해가되지 않아서 컴파일러 오류가 발생합니다.
그러나 설명 된 결과를 얻으려면 어떻게해야합니까? (내가 상상할 수있는 유일한 것은 정수를 반환하고 함수 몸체에 값을 하드 코딩하는 가상 함수로 ID
을 선언하는 것이지만 더 우아한 것을 찾고 있음)
감사합니다. 전진!
다형성 멤버 함수 만 작동하고 데이터 멤버 유효하지 않습니다. – Mahesh
템플릿을 기반으로 대안을 작성했습니다. http://stackoverflow.com/a/36797199/1529139 – 56ka