0

我有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 运算符>> 函数是“朋友”函数顺便说一句,Instance 中的相同函数也是如此。可能我正试图以错误的方式访问实例“操作员>>”,但如果我知道正确的方式,我会被诅咒......有什么帮助吗?

4

1 回答 1

3

Friend 函数不是成员函数,您不能像以前那样明确限定函数的名称,因为它根本不在名为Instance.

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

in >> inst;

不过,您的代码中有更多错误。首先,while (in.eof())当读取错误时会导致无限循环——<strong>永远不要这样做。

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

于 2013-02-08T21:26:20.693 回答