我正在为C ++开发一个简单的容器类,我意识到能够从数组中复制值会很有帮助。
两者之间的区别在于:
myClass myInstance;
myInstance += 2;
myInstance += 4;
myInstance += 8;
myInstance += 16;
和这个:
myClass myInstance;
int myArray[] = {2, 4, 8, 16};
myInstance = myArray;
显然,阵列结构要清洁得多。但是,由于无法获取传递给函数的数组的大小(在本例中为
operator=
),因此复制值是一个问题。我可以将size作为参数与数组一起传递,但这意味着我不能使用
operator=
:myInstance.getArrayValues(myArray, 4);
远不如直观
myInstance = myArray;
这样的事情通常如何处理?
最佳答案
实际上,您可以通过引用接受本机数组。这是一个可以执行所需操作的赋值运算符的示例:
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;
}