我目前正在开发一个类的程序,它要求我重载流提取操作符>>,以便将文件中的数据直接输入到类中。我得到了:
错误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进行erorr-correct并直接从txt文件中读取一直很困难。我可以提供所需的任何其他信息。任何帮助深表感谢。感谢。
答案 0 :(得分:3)
您的输入操作员签名
std::ifstream& operator>> (std::ifstream &in, const stockType &myStock);
// ^^^^^
毫无意义。要从流中输入任何内容到myStock
参数,当然它必须是非const
。此外,您通常不想重载std::istream
的特定实现,因此您的签名应如下所示:
std::istream& operator>> (std::istream &in, stockType &myStock);