Почему я получаю код ошибки C2276 при использовании функций void? - PullRequest
0 голосов
/ 09 июля 2020
#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, поэтому программа может выглядеть немного странно (с несколькими функциями для выполнения sh простой задачи). Любая помощь будет принята с благодарностью, спасибо.

1 Ответ

3 голосов
/ 09 июля 2020

У вас есть:

if (!inMovie.open)

и

while (!inMovie.eof)

Оба open и eof являются функциями, а не членами данных. Вам нужно включить в них (), например:

if (!inMovie.open())

и

while (!inMovie.eof())

Кроме того, рекомендуется прочитать: Почему iostream :: eof внутри al oop условие (т.е. `while (! Stream.eof ())`) считается неправильным?

Также, не связанное с ошибкой, но поскольку вы переопределяете inMovie в каждой функции, вы в итоге обе эти проверки всегда будут false. Удалите переопределение и положитесь на переменную члена класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...