Operatrator []作为非静态函数

时间:2017-05-16 19:45:53

标签: c++ operator-overloading

代码:

-

错误:

academia::SchedulingItem academia::operator[](academia::Schedule, int)' must be a nonstatic member function
     SchedulingItem operator[](Schedule obj,int el)

问题出在哪里?

2 个答案:

答案 0 :(得分:5)

问题是,正如消息所说,此函数必须是非静态成员函数。

That's simply a law of C++, for operator[]

您已将其设为非会员或“免费”功能。

答案 1 :(得分:1)

operator[]必须是Schedule类的非静态成员,例如:

class Schedule
{
private:
    std::vector<SchedulingItem> m_vec;
public:
    SchedulingItem& operator[](int el);
};

SchedulingItem& Schedule::operator[](int el)
{
    return m_vec.at(el);
}