从Array构造

Max*_*xpm 0 c++ arrays class

我正在为C++开发一个简单的容器类,我意识到能够从数组中复制值会很有帮助.

这是有区别的:

myClass myInstance;
myInstance += 2;
myInstance += 4;
myInstance += 8;
myInstance += 16;
Run Code Online (Sandbox Code Playgroud)

还有这个:

myClass myInstance;
int myArray[] = {2, 4, 8, 16};
myInstance = myArray;
Run Code Online (Sandbox Code Playgroud)

显然,阵列结构更清洁.但是,由于无法获取传递给函数的数组的大小(在本例中operator=),因此复制值是个问题.

我可以将大小作为参数与数组一起传递,但这意味着我无法使用operator=:

myInstance.getArrayValues(myArray, 4);
Run Code Online (Sandbox Code Playgroud)

是不是很直观

myInstance = myArray;
Run Code Online (Sandbox Code Playgroud)

通常如何处理这样的事情?

Ara*_*raK 6

实际上,您可以通过引用接受本机数组.以下是执行所需操作的赋值运算符的示例:

template <std::size_t N>
const myClass& operator=(const int(&arr)[N])
{
    // use arr as you do usually with arrays :)
    // N is the size of the array.
    return *this;
}
Run Code Online (Sandbox Code Playgroud)