【发布时间】:2021-10-23 10:26:43
【问题描述】:
我开始使用 c++,我有这个方法,我重载下标运算符“[]”,但我需要从该方法返回一个数组,在该方法中,我试图从一个更大的数组,但我似乎无法返回整个数组,因为我只能从数组中返回一个元素,我怎样才能获得返回整个数组的方法?
例如:
int& PagedArray::operator [] (int position){
if(position == 0){
for(int i = 0; i < 256; i++){
pageArray[i] = completeArray[i];
//cout << to_string(i) + " " + to_string(pageArray[i]) << endl;
}
return pageArray[0] ;
}
}
当我尝试返回时,我只能从数组 pageArray 中获取特定元素,但我需要返回 pageArray,我该如何完成?
谢谢
【问题讨论】:
-
从使用 C 样式数组切换到
std::vector。std::vector可以按值返回。 -
@PaulSanders 或
const&,这可能是您想要的。 -
无关:
position != 0时返回什么? -
@ChrisMM 应该在终端中显示消息“index out bounds”,但显然代码还没有完成,但我只是想先解决这个错误,所以我可以继续处理其余的问题
-
如果数组在编译时是固定长度的,可以返回一个引用,然后使用
[]语法访问它的元素(假设数组只要引用就存在给它)。如果长度未知(例如,动态分配的数组,其长度在运行时确定),则有必要返回一个代理(例如,对包含/管理数组的对象的引用,并提供提供对元素的访问的operator[]()。使用std::vector是(除其他外)第二种方法的一个示例
标签: c++ arrays overloading operator-keyword subscript