【发布时间】:2021-03-10 16:24:21
【问题描述】:
据我了解,可变参数函数是带有可变数量参数的函数。
现在我想将它应用到我希望构造函数成为可变参数的模板函数。我不知道这是否可能以及如何实现。因此,我的问题是: 可能吗? 我该怎么做?
这是我的非可变模板类。我希望能够有不同数量的占位符参数 T(所以要么只有 T1,要么 T1、T2 或者 T1 到 T5)。
template<typename T1, typename T2>
class tXmlBase
{
public:
tXmlBase(tXmlDoc* doc, T1 id1);
tXmlBase(tXmlDoc* doc, T1 id1, T2 id2);
virtual ~tXmlBase();
protected:
tXmlDoc* xml_doc;
pugi::xml_node root_node;
pugi::xml_node base_node;
pugi::xml_node parent_node;
T1 identifier1;
T2 identifier2;
int n_childs;
int n_attr;
我已阅读此内容,但不知道如何将其翻译到我的班级:https://en.cppreference.com/w/cpp/language/parameter_pack
编辑:为了更清楚: 这样做的目的如下: 此类应处理存储在 xml 文件的特定节点内的信息。让我们假设以下 xml 文件结构:
<root>
<node>
<elem id="1">
<low_level_info type="info" content="abc"/>
<low_level_info type="info" content="xyz" />
</elem>
<elem id="2">
...
</elem>
<node>
<node>
...
</node>
</root>
因此,有些节点只是节点,仅通过在上一次出现同名节点(此处为“名称”)之后位于第二个位置来区分,而其他节点则通过一个或多个属性(id、内容、类型)来区分.
我希望我的班级能够处理我有不同的方法来区分这些节点。
【问题讨论】:
-
您可以编写带有类模板参数的 T1 或/和 T2 的构造函数,但是 T3...5 对应于什么?新模板参数?
-
是的,没错。事实上,我想创建一个类,根据我的 xml 文件模式可能需要构造函数,这些构造函数在实例化它时需要使用变量属性值来识别正确的节点。我将编辑我的问题以使其更清楚。
标签: c++ variadic-templates variadic