具有变量类型的构造函数的可变数量的参数在C ++中创建变量私有成员

时间:2011-02-16 09:22:44

标签: c++ arrays instance-variables

我的任务非常繁重,而且我还没有找到任何解决方案。所以,这里是描述: - 任务是评估多个单维数组,其数量可以变化 - 好消息是可以指定数组类型

理想的做法: - 使用构造函数创建一个类,该构造函数接受可变数量的数组 - 这些数组也应该用作属性(私有成员),因此可以在对象的生命周期中对它们进行多次操作

我是如何尝试的: - 具有可变数量的参数的构造函数成员函数(我不知道为什么这不起作用) - 带向量的构造函数应该是更好的方法,但是如何存储类型的数组是在单独的数组中指定的,这意味着你不能提前为某些数组预期某些数据类型 - 我尝试使用预处理器将可变数量的数组声明为私有成员,但似乎循环和其他代码在私有内部不能很好地工作:声明

任何人的想法?

2 个答案:

答案 0 :(得分:2)

  

接受可变数量的数组的构造函数:

vector< vector<T> > ?

内部向量可以是不同的大小,但必须是相同的类型。

  

具有可变数量参数的构造函数成员函数

您可以使用具有可变数量参数的函数来创建类,查看boost :: bind的工作原理,这需要许多不同的参数列表。

boost mpl可以回答你想要做的事情,虽然目前还不清楚。

答案 1 :(得分:0)

为什么不使用简单的参数化类?

如果你的编译器支持C ++ 0x,你也可以使用初始化列表用于具有可变数量参数的构造函数。

template<class ArrayType>
class ArrayContainer
{
   std::vector<ArrayType> m_arrays;

   public:
   ArrayContainer(std::initializer_list<ArrayType> arrays)
   {
     m_arrays.reserve(arrays.size());
     std::copy(arrays.begin(), arrays.end(), m_array);
   }
};

构造函数现在接受可变数量的数组。

auto container = new ArrayContainer({ a, b, c });