와 매크로를 대체합니다 함수/템플릿
#define FOO(f) \
int result = m_Member.f; \
switch (result) \
{ \
case 1: \
m_pMember1->f; \
break;
case 2:
m_pMember2->f; \
break;
}
class foo
{
public:
void foo1(int x, int y)
{
FOO(foo1(x, y))
}
void foo2(int x, double y, void *z)
{
FOO(foo2(x, y))
}
protected:
fooA m_Member;
fooB m_Member1;
fooC m_Member2;
};
그래서 내 문제는 함수 이름 인수와 함께 매크로에 전달된다. FOO (foo1, x, y)와 같은 호출을 다시 작성한 다음 가변 인수 목록을 처리 할 수 있습니다. 그래서 매크로는 단지 하나의 함수 호출을 정의 할 것이다. 하지만 좀 더 우아한 해결책이있을 수 있습니다. 당신은 몇 가지 가상 기능 (여기
foo_base
이라고 함)
fooB
및
fooC
에 대한 기본 클래스를 추가 할 수 있습니다
당신이 다형성을 고려겠습니까? 'fooB'와'fooC'는'foo1'과'foo2'를 선언하는 공통 조상을 공유 할 수 있습니까? –