2011-02-16 86 views
0

我的任务非常繁重,我还没有找到任何足够好的解决方案。所以,这里是说明: - 任务是评估多个一维数组,其数量可以改变 - 好消息是,它可以指定类型的数组可变数量的构造函数的变量类型在C++中创建可变私有成员

而且这样做的可取方式: - 创建类的构造函数接受可变数量的数组 - 这些数组也应该用作属性(私有成员),因此可以在对象的生命周期期间对它们进行多个操作

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

任何人的想法?

+2

您能向我们展示您的代码尝试的一些吗?鉴于你想要类型多态,看起来你需要使用继承或模板,但很难一目了然。 – 2011-02-16 09:31:17

回答

2

构造接受可变数量的阵列:

vector< vector<T> > ? 

内载体可以具有不同的尺寸,但必须是同一类型的。

与参数

您可以使用的,创建一个类的参数变量数的函数变量数构造成员函数,看看如何提高::绑定的行为,需要大量不同的参数名单。

boost mpl可能会回答你正在尝试做的事情,虽然它相当不清楚。

+0

谢谢@CashCow。我知道内在的媒介,但我没有指出这一点。但是,这描述了我的部分问题:我的内部向量是不同类型的。 – mbpro 2011-02-16 09:47:12

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 }); 
相关问题