编译器抛出:"无效使用非静态成员'它'为什么会这样? 继承是正确的,但我不明白为什么它不让我使用它和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;
};
};
答案 0 :(得分:3)
运营商LT;&LT;是friend
函数,它实际上不是类JSON
的成员。因此,如果你只说allInfo
,编译器就不知道你在说什么allInfo
。
但是,正确的JSON
实例作为参数传递。你应该写这样的行:
it = js.allInfo.begin();
/* ... */
for(it; it != js.allInfo.end();it++){
现在,您告诉编译器您要使用属于实例allInfo
的{{1}}。