ezpzzzz
ezpzzzz

Reputation: 23

No operator "[ ]" matches these operands C++

const DayOfYearSet::DayOfYear DayOfYearSet::operator[](int index){

        if(index < 0){
            
            cout << "Error! Index cannot be negative.." << endl;
            exit(1);
        }

        if(index >= _size){

            cout << "Error! Index overflows the array size.." << endl;
            exit(1);
        }

        return _sets[index];
    }

    const DayOfYearSet DayOfYearSet::operator+(const DayOfYearSet &other){

        vector <DayOfYear> temp;
        for(auto i = 0; i < other.size(); ++i){
            temp.push_back(other[i]);
            .
            .
            .


        }
    }

Hey, I have an issue in the temp.push_back(other[i]) line of the code which the compiler says no operator "[]" matches these operands. As you can see I overloaded the index operator as member function but its not working? What am I doing wrong here? Thanks in advance..

EDIT: _sets is DayOfYear* _sets as a private data member of the class DayOfYearSet.

Upvotes: 0

Views: 719

Answers (1)

Drew Dormann
Drew Dormann

Reputation: 63755

You are trying to use operator[] on const DayOfYearSet &other, but that function is defined to only work on objects that are not const.

You should correctly const-qualify this function.

const DayOfYearSet::DayOfYear DayOfYearSet::operator[](int index) const
//                     This function can be used on const objects ^^^^^

Upvotes: 3

Related Questions