错误:无效使用非静态成员

时间:2016-12-18 20:56:46

标签: c++

编译器抛出:"无效使用非静态成员'它'为什么会这样? 继承是正确的,但我不明白为什么它不让我使用它和allInfo向量。

class JSON{

    private:
    vector<myType> allInfo;

    public:

    friend ostream &operator<<(ostream &os,const JSON &js)
    {
        vector<myType>::iterator it;
        it = this->allInfo.begin();

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

};

1 个答案:

答案 0 :(得分:3)

运营商LT;&LT;是friend函数,它实际上不是类JSON的成员。因此,如果你只说allInfo,编译器就不知道你在说什么allInfo

但是,正确的JSON实例作为参数传递。你应该写这样的行:

it = js.allInfo.begin();
/* ... */
for(it; it != js.allInfo.end();it++){

现在,您告诉编译器您要使用属于实例allInfo的{​​{1}}。