当有运算符

时间:2016-12-18 22:28:58

标签: c++ vector iterator operator-overloading

struct myType{
public:    

    myType operator=(const myType &value){
        return value;
    };

};

myType有一个运算符重载=但是当它在it = js.allInfo.begin();的JSON类中被调用时,编译器抛出:“'='没有可行的重载”

class JSON{

private:
vector<myType> allInfo;

public:    

friend ostream &operator<<(ostream &os,const JSON &js)
{
    vector<myType>::iterator it;

    for(it = js.allInfo.begin(); it != js.allInfo.end();it++){
        cout << "this is the info "<<(it->getNAME()) << endl;
    }
    return os;
};

我应该在重载中更改=修复此问题

1 个答案:

答案 0 :(得分:6)

您尝试使用非const迭代器迭代const对象(const JSON&amp; js)。

使用const迭代器:

vector<myType>::const_iterator it;

更好的是,使用关键字&#34; auto&#34;自动获得正确的类型:

auto it = js.allInfo.begin()