【发布时间】:2017-03-31 22:39:31
【问题描述】:
我想要一个可变参数模板类(比如N 模板参数)来定义N 成员函数,每个函数都从参数列表中获取一个类型的参数。我试过这个:
template<class Derived, class... DerivedOthers>
class VtfVisitor : public VtfVisitor<DerivedOthers...>
{
public:
virtual void visit(Derived& derived) = 0;
};
template<class Derived>
class VtfVisitor
{
public:
virtual void visit(Derived& derived) = 0;
};
这不起作用,因为我无法重新定义模板类。然后我尝试了Bo提出的解决方案:
template<class Derived, class... DerivedOthers>
class VtfVisitor : public VtfVisitor<DerivedOthers...>
{
public:
virtual void visit(Derived& derived) VISITOR_CVQ = 0;
};
template<class Derived>
class VtfVisitor<Derived>
{
public:
virtual void visit(Derived& derived) VISITOR_CVQ = 0;
};
这仍然不起作用:使用 VtfVisitor<D1,D2> 尝试此操作时,成员函数 visit(D2&) 未在实例化模板类中定义(而 visit(D1&) 已明确定义)。
我怎样才能让它按预期工作?
感谢您的帮助。
【问题讨论】:
标签: c++ templates variadic-templates