이러한 요소로 반복 할 수있는 이기종 요소로 일부 가변 템플릿 컨테이너 클래스를 구현해야합니다. 내 첫번째 생각은 가변 인수 표준 : : 튜플의 멤버 클래스를 만들이지만, (루프를 통해) 배열과 같은 방식으로 튜플의 요소를 얻는 것은 불가능하다 :Variadic 템플릿 이기종 컨테이너
struct A {void prnt(){std::cout<<"A\n";} };
struct B {void prnt(){std::cout<<"B\n";} };
struct C {void prnt(){std::cout<<"C\n";} };
template<typename...Arg>
struct Prc
{
Prc() : NumElems(sizeof...(Arg)), mems(std::make_tuple(Arg()...)){}
int NumElems;
std::tuple<Arg...> mems;
void process()
{
for(int i=0; i<NumElems; ++i)
std::get<i>(mems).prnt();//It's forbidden: "i" must be a constant
}
};
int main()
{
Prc<A,B,C> obj;
obj.process();
}
어떤 아이디어?
P.
struct A { void print() { clog << "A" << endl; } };
struct B { void print() { clog << "B" << endl; } };
struct C { void print() { clog << "C" << endl; } };
template<unsigned N>
struct iter
{
template<typename T>
static void f (T &t)
{
iter<N-1>::f (t);
get<N> (t).print();
}
};
template<>
struct iter<0>
{
template<typename T>
static void f (T &t)
{
get<0> (t).print();
}
};
그리고 호출 코드 : 나는 부스트 :: 변형 또는 부스트 :: 여기에 어떤
(http://loungecpp.wikidot.com/tips-and-tricks:indices) – Xeo
난 당신이 "무슨 뜻인지 모르겠어요 거대한 방식 "이라고 말했다. – jsp