C ++ Fstream в классе - PullRequest
       1

C ++ Fstream в классе

1 голос
/ 30 января 2012

Я начал изучать классы и теперь столкнулся с проблемой.Я пытаюсь поместить все свои переменные в класс, но получаю ошибки:

main.cpp|6|error: expected identifier before string constant| 
main.cpp|6|error: expected ',' or '...' before string constant|
main.cpp|7|error: expected identifier before string constant|
main.cpp|7|error: expected ',' or '...' before string constant|

Хотя, когда я делаю их глобальными, все отлично работает

    class Kauliukas{

        ifstream inFile("inFile.in");
        ofstream outFile("outFile.out");
        int n, akutes[100],k=0;

        void ivedimas();
        void skaiciavimas();
        void isvedimas();
};

В чем проблема?

Ответы [ 2 ]

6 голосов
/ 30 января 2012

Инициализация идет в конструкторе.Это отличается от, например, C #.Вы должны определить конструктор как

class Kauliukas {
public:
    Kauliukas() : inFile("inFile.in"), outFile("outFile.out"), k(0) {}
private:
    ifstream inFile;
    ofstream outFile;
    int n, akutes[100],k;

    void ivedimas();
    void skaiciavimas();
    void isvedimas();
};
2 голосов
/ 30 января 2012

В версиях языка до C ++ 11 вы можете объявлять только переменные внутри тела класса, вы также не можете их инициализировать (ifstream inFile - это объявление; ifstream inFile("infile.in") - это объявление и инициализация).

Вы должны сделать это так:

class Kauliukas
{
  public:
    Kauliukas();

  private:
    ifstream inFile;
};

Kauliukas::Kauliukas()    // This is the constructor definition
    : inFile("infile.in") // This is called an initialization list
{
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...