【发布时间】:2014-08-04 22:16:25
【问题描述】:
我目前正在开发一个类程序,该程序需要我重载流提取运算符 >>,以将文件中的数据直接提取到类中。我得到一个:
错误 C2678:二进制“>>”:未找到采用“std::ifstream”类型左侧操作数的运算符(或没有可接受的转换)
这是错误影响的具体代码。
int main()
#include <iostream>
#include <fstream>
#include <iomanip>
#include "stockType.h"
#include "stockListType.h"
using namespace std;
stockType myStock;
stockListType stockList;
ifstream infile;
infile.open("StockData.txt");
infile >> myStock;
stockType.h 头文件
#ifndef STOCKTYPE_H
#define STOCKTYPE_H
#include <string>
#include <fstream>
#include <iostream>
class stockType
{
public:
stockType();
void printStock();
void calcPercent();
char Symbol[3];
float openingPrice;
float closingPrice;
float todayHigh;
float todayLow;
float prevClose;
int volume;
float percent;
friend std::ifstream &operator >> (std::ifstream &in, const stockType &myStock);
};
#endif
stockType.cpp 资源文件
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include "stockType.h"
std::ifstream& operator>> (std::ifstream &in, const stockType &myStock)
{
in >> myStock.Symbol;
in >> myStock.openingPrice;
in >> myStock.closingPrice;
in >> myStock.todayHigh;
in >> myStock.todayLow;
in >> myStock.prevClose;
in >> myStock.volume;
return in;
}
我所做的大部分搜索是人们在使用 ostream 执行此操作时遇到问题,并且在程序使用期间获取他们的数据。尝试使用 ifstream 进行错误纠正并直接从 txt 文件中读取是很困难的。我可以提供任何需要的额外信息。任何帮助深表感谢。谢谢。
【问题讨论】:
-
三思而后行!!
conststockType &myStock肯定无法为该参数提供写入任何内容:P ... -
@πάντα ῥεῖ 好点子。出于某种原因,我无法理解 const 不允许我写入它,这首先会带走 const 的意义!
-
@Deduplicator 感谢您的链接:)
标签: c++ visual-c++ operator-overloading ifstream