2010-04-07 2 views
6

C++에서 제네릭 클래스의 변수/필드 수를 결정할 수 있습니까? 예를 들어C++ 템플릿 메타 프로그래밍, 멤버 변수 수?

나는 mpl을 보았지만 구현을 찾지 못했습니다.

감사합니다.

+0

왜 당신은 그들이 무엇인지 모른 채 몇 명인지 알고 싶습니까? – Potatoswatter

+0

나는 유형을 다루는 방법을 알고있다. 나는이 같은 템플리트 메타 프로그래밍의 다른 측면과 특징에 익숙하지 않다. – Anycorn

답변

7

No. C++은 구조에 대한 일반적인 내성을 제공하지 않습니다.

일반적인 POD struct의 몇 가지 기능이있는 C ++0x std::tuple을 시험해 볼 수 있습니다. 또는 Boost MPL 라이브러리에서 자신의 롤백을 시도해보십시오. 만약 당신이 C++로 시작한다면 좀 더 진보 할 것입니다.

+1

또한 Boost.Fusion을보고있다. 템플릿과 런타임 코드를 혼합하는 좋은 방법입니다. 필자는 simili-reflection이 필요할 때 개인적으로'boost :: fusion :: map'을'struct' /'class'의 해골로 사용했습니다. –

1

아니요. 아쉽게도 C++에는 그런 종류의 내성 검사가 내장되어 있지 않습니다. 그러나 QtMeta Object Compiler (moc)과 같은 몇 가지 추가 전처리를 사용하면 비슷한 것을 얻을 수 있습니다 ... QMetaObject 클래스는 propertyCount()을 제공합니다. 그러나 클래스는 QObject에서 상속 받아 Q_OBJECT 매크로를 사용하고 작업 할 모든 속성을 등록해야하므로 간단히 말해서 자동이 아닙니다.

1

직접 할 수 없습니다. 분명한 질문은 당신이 성취하고자하는 것입니다. 기회는 당신이 필요로하는 것을 할 수 있지만 그것을하는 방법은 다소 다를 수 있습니다.

+1

사실, 실제로 구체적인 것을하려고하지 않습니다. 내가 어떻게 그것을 할 수 있었는지를 깨닫고 어떻게해야할지 모르겠다. 질문을하기로 결정했다. 단지 추가적인 측면을 배우려고 노력합니다. – Anycorn

관련 문제