首页 > 解决方案 > 为什么我在使用 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 函数,这就是为什么程序看起来有点奇怪(用几个函数来完成一个简单的任务)。任何帮助将不胜感激,谢谢。

标签: c++compiler-errors

解决方案


你有:

if (!inMovie.open)

while (!inMovie.eof)

两者都是函数,而不是数据成员openeof您需要将()它们包括在内,如下所示:

if (!inMovie.open())

while (!inMovie.eof())

此外,一些建议阅读:为什么 iostream::eof 在循环条件内(即 `while (!stream.eof())`)被认为是错误的?

此外,与错误无关,但由于您inMovie在每个函数中重新定义,您最终会得到这两个检查始终是false. 去掉重定义,依赖类成员变量。


推荐阅读