는 가변 인자 템플릿 매개 변수에서 선형 계층 구조를 생성 할 수 있습니까? 예를 들어C++ 가변 인자 템플릿 매개 변수
GenLinearHierarchy<A,B,C,D,...> linHierarchy;
계층 구조를 생성 여기서 A -> B -> C -> D -> ... -> 빈 (여기서, (가) -> 심볼 상속 약자). 템플릿 매개 변수 (템플릿 템플릿 ... 매개 변수)과 같은 서명이
: 기본 계층 구조에서 위의 클래스이며, 플레이트 (예를 들어 '가장 파생'클래스template <class Base, class Plate> class A;
D < E < ...>를 < ...>>).
지금까지 내가 실패 있었어 - 내가 (내가 순환 문제가 계속 실행 않음) 원에 갈거야 여부를 궁금해하기 시작했다. - 혼란에 대해 죄송
여기에 '콘크리트 솔루션'(내가 너무 좋아 아니에요 일)입니다 : 그래서
// Linear Hierarchy
#include <iostream>
template <class Base, class Floor>
class D : public Base
{
public:
};
template <class Base, class Floor>
class C : public Base
{
public:
void Fire()
{
static_cast<Floor*>(this)->Handle();
}
};
template <class Base, class Floor>
class B : public Base
{
public:
void Handle()
{
std::cout << "Handled" << std::endl;
}
};
class _FINISH {};
class _START : public B<C<D<_FINISH, _START>, _START, _START> {};
int main()
{
typedef _START A;
A a;
a.Fire();
return 0;
}
, 난 여전히 'GenLinearHierarchy'클래스를 찾고 있어요하는 수 이 같은 instatiation 위에서 뭔가를 생성하지만, : 그것은 아마 같은 뭔가
저는 'A'가 상속받는 것을 약간 혼란 스럽습니다. 당신은 클래스를 변경할 수 없습니다'Base'와'Plate', 것만'A'를 구성하지만, 아마도 이것은 당신이 무엇을 의미하는지는 아니고, 단지 내 혼란을 예시한다. – Suedocode
이것은 그림이 문자 그대로 천 단어를 말할 수있는 질문 중 하나입니다. – WhozCraig
아니면 당신이 클래스의 집합 주어진 상속 계층 구조를 해결하려면 ... 이제 그 재미있을 것입니다. – Suedocode