C++中如何传递不定参数
首先,不使用C函数里“...”的方式,如printf的实现模式。
其次,我希望能传递的参数个数和类型都不确定。比如,我又三个类A、B、C,它们都有一个方法Create,但是Create里的参数不同。现在我想用一个泛型的管理类来生成A、B、C对象,而这个泛型类只提供一个接口CreateObject。
现在,我只需要通过客户端在调用CreateObject时提供的参数进行判断而调用A、B、C的Create方法。类似如下代码:
如果不能实现,权作讨论。
目前我知道可以有这种方法Func(vector<boost::any>),但是会有一个很大的麻烦,就是取值。
VS2010里好像提供了template<typename T,...>的方式,没研究过~
其次,我希望能传递的参数个数和类型都不确定。比如,我又三个类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,...>的方式,没研究过~
...全文
相关推荐
不定参数函数
不定参数函数规则,描述怎样写一个参数个数待定的函数。
C++中的变长参数深入理解
前言 在吸进的一个项目中为了使用共享内存和自定义内存池,我们自己定义了MemNew函数,且在函数内部对于非pod类型自动执行构造函数。在需要的地方调用自定义的MemNew函数。这样就带来一个问题,使用stl的类都有默认构造函数,以及复制构造函数等。但使用共享内存和内存池的类可能没有默认构造函数,而是定义了多个参数的构造函数,于是如何将参数传入MemNew函数便成了问题。 一、变长参数函数 首先回顾一下较多使用的变长参数函数,最经典的便是printf。 extern int printf(const char *format, ...); 以上是一个变长参数的函数声明。我们自己定义一个测试函
C/C++语言可变参数函数的参数传递机制剖析.pdf
C/C++语言可变参数函数的参数传递机制剖析.pdf
不定参数函数1.pdf
不定参数函数1
c++11可变参数使用示例
主要介绍了c++11可变参数使用示例,需要的朋友可以参考下


