c++ - 为什么我在使用 void 函数时收到错误代码 C2276?
问题描述
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Movie
{
private:
ifstream inMovie; //private member variables
void openFile();
void testFile();
void readFile();
public:
Movie(); //constructor
void driver()
{
openFile();
};
};
void Movie::openFile()
{
ifstream inMovie;
inMovie.open("SciFiMovies.txt");
testFile();
readFile();
}
void Movie::testFile()
{
ifstream inMovie;
if (!inMovie.open)
{
cout << "Unable to open the file.";
exit(1);
}
}
void Movie::readFile()
{
ifstream inMovie;
string file;
while (!inMovie.eof)
{
getline(inMovie, file);
cout << file;
}
}
int main()
{
Movie movObj;
movObj.driver();
system("pause");
return 0;
}
为什么我会收到错误代码?使用 !当我想测试文件是否无法打开或读取文件时,通常对我有用。另外,老师要求我们使用几个不同的 void 函数,这就是为什么程序看起来有点奇怪(用几个函数来完成一个简单的任务)。任何帮助将不胜感激,谢谢。
解决方案
你有:
if (!inMovie.open)
和
while (!inMovie.eof)
两者都是函数,而不是数据成员open
。eof
您需要将()
它们包括在内,如下所示:
if (!inMovie.open())
和
while (!inMovie.eof())
此外,一些建议阅读:为什么 iostream::eof 在循环条件内(即 `while (!stream.eof())`)被认为是错误的?
此外,与错误无关,但由于您inMovie
在每个函数中重新定义,您最终会得到这两个检查始终是false
. 去掉重定义,依赖类成员变量。
推荐阅读
- c++ - 调试时vector和它的reference之间的区别
- python - django:type(int instance) 显示 long
- r - 与数据框中的参考组的相关性
- tortoisesvn - TortoiseSVN:无法连接到 URL 'svn://servername/projectname' 的存储库
- python - Google 地球引擎波段值为空/“无”
- java - JavaFX 应用程序无法打开并在任务管理器中加载
- nlp - 从原始文本中提取基于规则的信息
- android - 是什么导致多播消息在wifi重启后不立即流动
- mysql - 如何在 Visual Studio 17 中显示来自 mysql 的 2 个表
- c - 打印最大和最小的数字,直到给出 -1