"运算符>>"不是"实例"的成员
`operator>>' is not a member of `Instance'
我有包含Instance.h头的InstancePool
类(下面是它的一部分),但我在InstancePool
的operator>>
函数中的标题中得到了错误。
#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操作符>>函数是一个"朋友"函数BTW,实例中的函数也是如此。可能我试图以错误的方式访问实例"operator>>",但如果我知道正确的方法,我会被诅咒的。。。有什么帮助吗?
Friend函数不是成员函数,您不能像这样明确限定函数的名称,因为它不在名为Instance
的命名空间中。
好消息是:你不需要。只需正常呼叫:
in >> inst;
不过,您的代码中还有更多的错误。首先,当读取时出现错误时,while (in.eof())
将导致无限循环——永远不要这样做。
其次,您正在使用getline
读取和丢弃行。这可能不是你想做的,对吧?您想从行中读取每个实例,还是直接从输入流中读取?
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 助记符和指向成员语法的指针
- 用于访问容器<T>数据成员的正确 API
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 嵌套在类中时无法设置成员数据
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 将函数类成员映射到类本身内部
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 将公共但非静态的成员函数与ALGLIB集成
- 多成员Constexpr结构初始化
- 是否需要使用 - &gt;运算符在C 中调用成员函数时