내 머리말에있는 각 클래스의 고유 번호를 생성하려는 경우 (소수점 이하 자릿수), 단 1,2,3,4 등의 숫자 만 사용해야한다고 가정 해 보겠습니다.컴파일시에 고유 번호 생성
물론 나는이 하드 코드 수 : 이것은 현실 때문에 매우 오류가 발생하기 쉬운입니다
struct A { enum { ID = 1; }; };
struct B { enum { ID = 2; }; };
struct C { enum { ID = 3; }; };
struct D { enum { ID = 4; }; };
클래스가 작은되지 않습니다 내가 중간에 새로운 클래스를 추가하면 나는 모든 다음을 변경해야 ID 개요를 완전히 잃고 싶지 않은 경우 번호를 입력하십시오.
은 내가 다음을 수행 할 수 있으면 좋겠다 : constexpr 함수 호출 AFAIK 부작용이 없을 수 있기 때문에
이struct A { enum { ID = get_next_int(); }; };
struct B { enum { ID = get_next_int(); }; };
struct C { enum { ID = get_next_int(); }; };
struct D { enum { ID = get_next_int(); }; };
그러나, 이것은 불가능하다. 나는 그런 매크로를 사용하는 것도 불가능하다고 생각한다.
struct A_id_holder : some_base_counter {};
struct A { enum { ID = A_id_holder::ID; }; };
struct B_id_holder : some_base_counter {};
struct B { enum { ID = B_id_holder::ID; }; };
struct C_id_holder : some_base_counter {};
struct C { enum { ID = C_id_holder::ID; }; };
struct D_id_holder : some_base_counter {};
struct D { enum { ID = D_id_holder::ID; }; };
을하지만 솔직히, 나는 어떻게 구현하는 아무 생각이 :
나는 또한 그런 일에 행운이 될 것입니다.
내 목표를 달성 할 수 있습니까? 그렇다면 어떻게 할 수 있습니까?
TMP와 어떤 관련이 있습니까? 그것이 당신이 탐험 해 왔던 길입니까? 아니면 TMP 마법사가 파란 색깔의 답을 찾을 수 있기를 희망하고 있습니까? – jpm
네, 매크로로는이 작업을 수행 할 수 없기 때문에, TMP가 마지막 희망입니다. 그렇지 않으면 ID를 초기화하는 방법이 무엇입니까? 나는 다른 가능성에 대해서도 기뻐할 것이다. 좀 더 일반적인 게시물을 편집했습니다. – helami
왜 이것을 원하니? –