Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误重载>&燃气轮机;运算符从文件读入类_C++_Visual C++_Operator Overloading_Ifstream - Fatal编程技术网

C++ 错误重载>&燃气轮机;运算符从文件读入类

C++ 错误重载>&燃气轮机;运算符从文件读入类,c++,visual-c++,operator-overloading,ifstream,C++,Visual C++,Operator Overloading,Ifstream,我目前正在为类编写一个程序,该程序要求我重载流提取操作符>>,以便将文件中的数据直接导入类中。我得到一个: 错误C2678:二进制“>>”:未找到接受类型为“std::ifstream”的左侧操作数的运算符(或没有可接受的转换) 以下是错误影响的特定代码 int main() #包括 #包括 #包括 #包括“stockType.h” #包括“stockListType.h” 使用名称空间std; 股票型myStock; 股票列表类型股票列表; 河流充填; infle.open(“StockDat

我目前正在为类编写一个程序,该程序要求我重载流提取操作符>>,以便将文件中的数据直接导入类中。我得到一个:

错误C2678:二进制“>>”:未找到接受类型为“std::ifstream”的左侧操作数的运算符(或没有可接受的转换)

以下是错误影响的特定代码

int main()

#包括
#包括
#包括
#包括“stockType.h”
#包括“stockListType.h”
使用名称空间std;
股票型myStock;
股票列表类型股票列表;
河流充填;
infle.open(“StockData.txt”);
infle>>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
#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;
}
\ifndef STOCKTYPE\u H
#定义库存类型
#包括
#包括
#包括
类股票类型
{
公众:
stockType();
作废印刷品();
void calcPercent();
字符符号[3];
浮动开盘价;
浮动收盘价;
今天涨价;
今天浮低;
浮动和关闭;
国际卷;
浮动百分比;
friend std::ifstream&operator>>(std::ifstream&in,const stockType&myStock);
};
#恩迪夫
stockType.cpp资源文件

#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
#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;
}
#包括
#包括
#包括
#包括
#包括“stockType.h”
std::ifstream和运算符>>(std::ifstream和in、常量stockType和myStock)
{
在>>myStock.Symbol中;
在>>myStock.openingPrice;
在>>myStock.closingPrice中;
在>>myStock.todayHigh;
在>>myStock.todayLow;
在>>myStock.prevClose中;
在>>myStock.volume中;
返回;
}

我所做的大部分搜索都是人们在使用ostream时遇到问题,并且在程序使用过程中获取他们的数据。尝试使用ifstream并直接从txt文件中读取erorr是很困难的。我可以提供任何需要的额外信息。非常感谢您的帮助。谢谢。

您的输入操作员签名

std::ifstream& operator>> (std::ifstream &in, const stockType &myStock);
                                           // ^^^^^
毫无意义。要将流中的任何内容输入到
myStock
参数,它当然必须是非
const
。另外,您通常不希望重载
std::istream
的特定实现,因此您的签名应该如下所示:

std::istream& operator>> (std::istream &in, stockType &myStock);

输入运算符签名

std::ifstream& operator>> (std::ifstream &in, const stockType &myStock);
                                           // ^^^^^
毫无意义。要将流中的任何内容输入到
myStock
参数,它当然必须是非
const
。另外,您通常不希望重载
std::istream
的特定实现,因此您的签名应该如下所示:

std::istream& operator>> (std::istream &in, stockType &myStock);

输入运算符签名

std::ifstream& operator>> (std::ifstream &in, const stockType &myStock);
                                           // ^^^^^
毫无意义。要将流中的任何内容输入到
myStock
参数,它当然必须是非
const
。另外,您通常不希望重载
std::istream
的特定实现,因此您的签名应该如下所示:

std::istream& operator>> (std::istream &in, stockType &myStock);

输入运算符签名

std::ifstream& operator>> (std::ifstream &in, const stockType &myStock);
                                           // ^^^^^
毫无意义。要将流中的任何内容输入到
myStock
参数,它当然必须是非
const
。另外,您通常不希望重载
std::istream
的特定实现,因此您的签名应该如下所示:

std::istream& operator>> (std::istream &in, stockType &myStock);


三思而后行
const
stockType&myStock
肯定无法写入此参数:P…进一步读取:@πάνταῥεῖ 很好。出于某种原因,我没有意识到康斯特不允许我给它写信,这将从一开始就剥夺康斯特的地位@重复数据消除者:感谢链接:)请三思
const
stockType&myStock
肯定无法写入此参数:P…进一步读取:@πάνταῥεῖ 很好。出于某种原因,我没有意识到康斯特不允许我给它写信,这将从一开始就剥夺康斯特的地位@重复数据消除者:感谢链接:)请三思
const
stockType&myStock
肯定无法写入此参数:P…进一步读取:@πάνταῥεῖ 很好。出于某种原因,我没有意识到康斯特不允许我给它写信,这将从一开始就剥夺康斯特的地位@重复数据消除者:感谢链接:)请三思
const
stockType&myStock
肯定无法写入此参数:P…进一步读取:@πάνταῥεῖ 很好。出于某种原因,我没有意识到康斯特不允许我给它写信,这将从一开始就剥夺康斯特的地位@重复数据消除器感谢链接:)一般来说,它不应该是std::istream&而不是std::ifstream&?我不知道任务是不是为了ifstream做的,是的。此特定零件的指定说明:例如,假设infle是一个ifstream对象,并且输入文件是使用对象infle打开的。进一步假设myStock是一个stock对象。然后声明:infle>>myStock;从输入文件读取数据并将其存储在对象myStock中。(请注意,此语句读取并存储myStock的相关组件中的数据)@user3220776耶!你为什么不去做呢?从我的回答中你有什么不明白的吗?如果有必要的话,我愿意解释更多。哦,有道理。在查找重载概念时,我实际上看到了const所建议的方法;由于完全不熟悉重载,直接向类填充。Thanks@TimeStamp12您可能已经通过对输出的解释看到了它。
std::ostream&operator在一般情况下,它不应该是std::istream&而不是std::ifstream&?我不知道任务是不是为了ifstream做的,是的。此特定零件的指定说明:例如,假设infle是一个ifstream对象,并且输入文件是使用对象infle打开的。进一步假设myStock是一个stock对象。然后声明:infle>>myStock;从输入文件读取数据