typedef 목록과 개체 인스턴스 목록을 목록에서 생성하는 방법이나 방법을 찾고 있습니다. 이러한 매크로는 객체의 클래스 유형과 생성자 매개 변수를 정의합니다.C/C++ 매크로 : 하나의 매크로로 두 개의 코드 섹션을 생성하는 방법 (전 처리기 라이브러리 향상)
아래 코드는 (작동하지 않는) 코드처럼 보입니다. 해결해야 할 문제는 하나의 매크로 호출 목록에서 두 개의 다른 목록을 생성하는 방법입니다. 이 문제는 부스트 전 처리기 라이브러리 부분을 해결하는 것 같아요하지만 지금은 어떻게 붙일 수 있습니다. 당신이 C 매크로에서 루프를 확장합니다
/////////////////////////////////////////////////////////////////////////////////
// MACRO-Definitions
#define DEF_OBJECT_TYPE(name, class, contructor_params) \
typedef class name ## type;
name ## type* name;
#define DEF_OBJECT_RUN(name, class, contructor_params) \
name ## type* name = new name ## type contructor_params; \
#define DEF_OBJECTS(definitions) \
/* Type-Header */ \
definitions \
/* Type-Footer */ \
/* Run-Header */ \
definitions \
/* Run-Footer */
#define OBJECT(name) (dynamic_cast<name ## type*>(name))
/////////////////////////////////////////////////////////////////////////////////
// Object-Definitions
DEF_OBJECTS(
DEF_OBJECT(Object1, CClass1, ("par1"))
DEF_OBJECT(Object2, CClass2, ("par1", "par1"))
)
/////////////////////////////////////////////////////////////////////////////////
// This shall be the result of the macro expansion
// shall expand to:
struct MyClass {
typedef class Object1type;
Object1type* Object1;
typedef class Object2type;
Object2type* Object2;
void Run();
}
void MyClass::Init() {
Object1type* Object1 = new Object1type("par1");
Object2type* Object2 = new Object2type("par1", "par2");
}
// end of expansion
/////////////////////////////////////////////////////////////////////////////////
// I want to use these automatic created objects in this way:
void MyClass::Run() {
OBJECT(Object1)->method_class1(1);
OBJECT(Object2)->method_class2(1,2);
}
빠른 해결책을 제공해 주셔서 감사합니다. TYPE0_DEF, TYPE1_DEF 등의 생성. 매크로는 이음새가 boost-preprocessor-library의 후보가됩니다. 나는 이것을 최대한 빨리 시도 할 것이다. 다시 한번 감사드립니다. – Marcel