错误:不匹配'运营商[]'

时间:2014-07-18 05:51:41

标签: c++

我创建了一个名为ArrayCreator的类来动态分配2D数组。但是,当我运行main.cpp以输出2D数组的特定元素时,编译器会显示以下错误消息:

  

错误:不匹配'运营商[]' (操作数类型是' ArrayCreator'和' 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;
        }
    }
}
---------------------------------------------------------

1 个答案:

答案 0 :(得分:1)

您需要在公开场合移动成员arr并使用它:arr.arr[1][1]或为ArrayCreator定义operator[](int)

int* operator[](int index)
{
  return arr[index];
}