0
我創建了一個名爲ArrayCreator的類來動態分配2D數組。然而,當我運行的main.cpp輸出二維數組的特定元素,編譯器會顯示以下錯誤信息:錯誤:'operator []'不匹配'
error: no match for 'operator[]' (operand types are 'ArrayCreator' and 'int')
詳情請參閱下面的代碼:
main.cpp:
#include <iostream>
#include "arraycreator.h"
using namespace std;
int main()
{
ArrayCreator arr;
arr.initArray();
cout<<arr[4][5]<<endl;
return 0;
}
---------------------------------------------------------
Header File:
#ifndef ARRAYCREATOR_H
#define ARRAYCREATOR_H
#define row 4
#define col 10
class ArrayCreator
{
int** arr;
public:
ArrayCreator();
void initArray();
~ArrayCreator();
};
#endif // ARRAYCREATOR_H
---------------------------------------------------------
Implementation File:
#include "arraycreator.h"
#include <iostream>
using namespace std;
ArrayCreator::ArrayCreator(){
arr=new int*[row];
for(int i=0; i<row; i++){
arr[i]=new int[col];
}
}
ArrayCreator::~ArrayCreator(){
for(int i=0; i<row; i++) {
delete [] arr[i];
arr[i]=NULL;
}
delete [] arr;
arr=NULL;
}
void ArrayCreator::initArray(){
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
arr[i][j]=i*j;
}
}
}
---------------------------------------------------------
您還沒有定義'操作符[](INT)'你'ArrayC reator'類。 – user657267
您的意思是當我創建ArrayCreator類的對象時,我不能將此對象視爲正常的2D數組?爲了訪問這個2D數組的任何特定元素,我需要定義另一個函數運算符[](int)? – yangfeiyun
@楊飛雲,這就對了。 –