1

異常なエラーが発生します:

エラー: '&' の前に unqualified-id が必要です トークン

ソースコード:

// Overloading the c++ array subscript operator [ ]

#include<iostream>
using namespace std;

const int size=10;

class myArray
{
      int a[size];
    public:
      myArray()
      {}
      int & operator [](int);
      void print_array();   
};

int myArray & operator [](int x) // This is the line where error is as by compiler
{
          return a[x];
}

void myArray::print_array()
{
    for (int j=0; j < 10; j++)
        cout<<"array["<<j<<"] = "<<a[j]<<"\n";
}

int main()
{
    myArray instance;
    for (int i=0; i < size; i++)
     {
       instance[i] = i;
     }  
    instance.print_array();

    cout<<"\n\n";
    return 0;
}
4

2 に答える 2

1

演算子[]関数がmyArrayのメンバーであることをコンパイラに通知する必要があります。

int & myArray::operator [](const int x) 
{
          return a[x];
}

詳細については、このページに適切な例があります。

于 2011-04-03T04:40:15.050 に答える
0

問題はあなたの定義にありますoperator []

int myArray & operator [](int x) // This is the line where error is as by compiler
{
          return a[x];
}

する必要があります:

int & myArray::operator [](const int x) 
{
          return a[x];
}

また、提案として、[]は通常、配列の境界を越えないようにオーバーロードされます。したがって、[]オーバーロードは、理想的には、そのインデックスで配列を逆参照する前にチェックxする必要があります。sizeこのようなチェックを行わないと、[]のオーバーロードの目的全体が無効になります。

于 2011-04-03T05:45:22.063 に答える