我正在使用
xsd从xml架构文件创建c代码.对于xml类型,创建了多个函数(用于序列化等).
如果类型被称为XmlType,则创建以下形式的多个函数:
XmlType XmlType_(const XmlType& a, const string& b)
string XmlType_(const XmlType& a)
...
这是普通函数,而不是XmlType的成员,它们都具有相同的名称.
对于XmlType2,函数将被称为XmlType2_.
我想为我的xml方案的所有不同xml类型编写一个实用程序模板类.不同的功能将在本课程中被称为洞察力.到目前为止我所拥有的是这样的:
template
using TFunc1 = T (*)(const T&, const string&);
template
using TFunc2 = string (*)(const T&);
template func2, TFunc2 func2>
class XmlUtil {
...
};
当创建XmlUtil类的实例时,如果必须这样做:
XmlUtil util;
当我必须传递更多函数作为参数时,这感觉有点多余并且变得更糟.
我想像这样使用util类:
XmlUtil util;
或者甚至更好
XmlUtil util;
我能想到的唯一方法是以某种方式使用define,但感觉不对.
还有其他办法吗?
编辑:
我现在正在使用一个定义:
#define TRPL(name) name, name ## _, name ## _
...
XmlUtil util;
我会编辑这个,如果我找到更好的东西(也许像Yakk在他的回答中建议的覆盖集).