数组大小成员函数编译错误(Array Size Member Function Compile Er

2019-09-01 16:01发布

与此代码工作:

int myArray[10];
    for(int i = 0; i < myArray.size(); i++)
        cout << myArray[i] << endl;

编译器错误:

错误:请求构件“大小”在“myArray的”,这是非类类型“INT [10]” |

我必须失去了一些东西很明显,但我没有看到它。

Answer 1:

数组类型不是类类型,并且没有成员函数。 所以数组没有叫一个成员函数size 。 然而,由于阵列具有编译时固定的尺寸,你知道的大小是10

for(int i = 0; i < 10; i++)
    cout << myArray[i] << endl;

当然,最好避免幻数,并把大小在命名常量的地方。 可替代地,有用于确定数组类型的对象的长度的标准库函数:

for(int i = 0; i < std::extent(myArray); i++)
    cout << myArray[i] << endl;

你可以,但是,使用std::array代替,它封装了一个数组类型的对象为你确实提供了一个size成员函数:

std::array<int, 10> myArray;
for(int i = 0; i < myArray.size(); i++)
    cout << myArray[i] << endl;


Answer 2:

你想要sizeof操作符:

int myArray[10];
    for(int i = 0; i < (sizeof(myArray)/sizeof(myArray[0])); i++)
        cout << myArray[i] << endl;


Answer 3:

大小是不适合的C ++静态数组定义。 如果你必须使用一个静态数组,你需要跟踪数组的长度的另一个变量。

喜欢:

const int size = 10;
int arr[size];
for(int i = 0; i < size; i++){
    cout << myArray[i] << endl;
}

在另一方面,如果它不使用静态数组的要求,我会建议你使用std ::向量来代替。

std::vector<int> arr;
for (int i = 0, max = arr.size(); i<max;i++){
  [...]
}


文章来源: Array Size Member Function Compile Error