C++中如何传递不定参数

chenyu2202863 chenyu2202863 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
首先,不使用C函数里“...”的方式,如printf的实现模式。

其次,我希望能传递的参数个数和类型都不确定。比如,我又三个类A、B、C,它们都有一个方法Create,但是Create里的参数不同。现在我想用一个泛型的管理类来生成A、B、C对象,而这个泛型类只提供一个接口CreateObject。

现在,我只需要通过客户端在调用CreateObject时提供的参数进行判断而调用A、B、C的Create方法。类似如下代码:

template<typename T>
struct CreateControl
{
T *Create()
{
//...
}
}

template<>
struct CreateControl<A>
{
A *Create(int var1, int var2)
{
//...
}
}

template<>
struct CreateControl<B>
{
B *Create(int var1, char var2, string var3)
{
//...
}
}

template<>
struct CreateControl<C>
{
C *Create(void)
{
//...
}
}


template<typename T, template<typename> class TCreatePolicy = CreateControl>
class ControlManagerT
: public TCreatePolicy<T>
{
public:
T *Create(/*这里就需要我所需求的*/)
{
return TCreatePolicy<T>::Create(/**/);
}
}


如果不能实现,权作讨论。
目前我知道可以有这种方法Func(vector<boost::any>),但是会有一个很大的麻烦,就是取值。
VS2010里好像提供了template<typename T,...>的方式,没研究过~

...全文
评论 19
收藏 已收藏
分享
返回顶部
chenyu2202863
C++ 语言 65,214 成员 250,514 内容