나는 재귀 적으로 작동해야하는이 함수를 가지고있다.부분 variadic 템플릿 함수의 특수화
template <class C, typename ...Arguments>
void addStyleClassRecursive(C *c, Arguments... arg)
{
c->addStyleClass(arg...);
for (unsigned int i=0; i<c->children().size(); ++i)
{
addStyleClassRecursive(c->children()[i], arg...);
}
}
는 이제 어떤 시점에서 내가하지 addStyleClass
멤버 함수가있는 클래스 (Wt::WObject
)를 누릅니다 것을 발생하므로 컴파일러는이 문제에 대해 -rightly- 뿌려줍니다. 확인. 그래서 나는 Wt::WObject
에 대한 버전을 추가하는 코드를 전문으로 생각 :
template <class C=Wt::WObject, typename ...Arguments>
void addStyleClassRecursive(Wt::WObject *c, Arguments... arg)
{
for (unsigned int i=0; i<c->children().size(); ++i)
{
addStyleClassRecursive(c->children()[i], arg...);
}
}
이 그 자체 컴파일러 오류를 제공하지 않지만, 완전히 실제로 컴파일러에 대한 WObject
필요한 멤버를 가지고 있지 불평 계속 (무시 함수, 일반 함수 내에서 같은 행을 가리킴).
template <typename ...Arguments>
void addStyleClassRecursive<Wt::WObject, Arguments...>(Wt::WObject *c, Arguments... arg)
{
for (unsigned int i=0; i<c->children().size(); ++i)
{
addStyleClassRecursive(c->children()[i], arg...);
}
}
에 전문을 시도
non-type partial specialization 'addStyleClassRecursive<Wt::WObject, Arguments ...>' is not allowed
void addStyleClassRecursive<Wt::WObject, Arguments...>(Wt::WObject *c, Arguments... arg);
^
그래서 누군가가 필요한 결과를 달성하는 방법을 지적 할 수 있습니까?
작동하도록 약간의 변경을해야했지만 실제로는 플러그 앤 플레이 솔루션이었습니다. 감사. – DrHell
@DrHell 휴대 전화에서 썼습니다. 오타가 있으면 용서해주세요. 나는 그것이 당신을 위해 일해서 다행입니다. – skypjack
미안하지만, 나는 오만한 소리를 내고 싶지 않았습니다. 앞으로 누군가가 그것을 사용하기를 원할 때 약간의 변화가 필요하다고 설명했고 처음 실행했을 때 왜 효과가 없었는지 궁금해했습니다. 다시 한번 감사드립니다. :) – DrHell