`运营商GT;>”不是`Instance'的成员

时间:2013-02-08 21:23:00

标签: c++ compiler-errors

我有InstancePool类(下面的部分),其中包含Instance.h标头,但我在operator>> InstancePool函数的标题中得到错误。

#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <sstream>
#include <stdlib.h>

using namespace std;

#include "Instance.h"
#include "InstancePool.h"

istream &operator >> (istream &in , InstancePool &ip) {

    ip.Instances->clear();

    string input;
    getline(in , input);

    while (!in.eof()) {

        Instance inst;

        Instance::operator >>(in , inst); // <- line giving me the error

        ip.Instances->push_back(inst);

        getline(in , input);

    }
}

InstancePool运算符&gt;&gt;函数是一个'朋友'函数BTW,实例中的函数也是如此。可能我正在尝试访问Instance'运算符&gt;&gt;'以错误的方式,但如果我知道正确的话,我会被诅咒...... 有什么帮助吗?

1 个答案:

答案 0 :(得分:3)

朋友函数不是成员函数,您不能以您的方式显式限定函数的名称,因为它不在名为Instance的名称空间内。

好消息是:你不需要。只需正常调用它:

in >> inst;

但是,您的代码中存在更多错误。首先,当读取时出现错误时,while (in.eof())将导致无限循环 - 从不执行此操作。

其次,您正在使用getline阅读并丢弃行。这可能不是你想做的,对吧?您想要从行中直接读取每个实例还是直接从输入流中读取?