我有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;'以错误的方式,但如果我知道正确的话,我会被诅咒...... 有什么帮助吗?
答案 0 :(得分:3)
朋友函数不是成员函数,您不能以您的方式显式限定函数的名称,因为它不在名为Instance
的名称空间内。
好消息是:你不需要。只需正常调用它:
in >> inst;
但是,您的代码中存在更多错误。首先,当读取时出现错误时,while (in.eof())
将导致无限循环 - 从不执行此操作。
其次,您正在使用getline
阅读并丢弃行。这可能不是你想做的,对吧?您想要从行中直接读取每个实例还是直接从输入流中读取?