Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > класс для работы с fstream


Автор: sa1o 20.5.2010, 22:53
Здравствуйте.

Хотел создать класс обертку для работы с fstream.
в самом начале столкнулся с ошибкой, не пойму на что ругается компилятор (visuacl c++ 2008 express), помогите пожалуйста разобраться:

Код

#include "stdafx.h"

class Files {

public:

    //объект fstream
    fstream &f_ptr;

    //конструктор
    Files(char *fname, std::ios::openmode mode)
    {
        //создаем объект fstream
        fstream f;
        f_ptr = f;
        
        //проверка на валидность
        if(!f_ptr) {
            cout << "fstream error, check headers";
            exit(1);
        }
    }
    
    //деструктор
    ~Files()
    {
        delete f_ptr;
    }
};


files.cpp(11) : error C2758: Files::f_ptr: требуется инициализация в списке инициализации базовых классов и членов

files.cpp(8): см. объявление 'Files::f_ptr'

Автор: mrbrooks 21.5.2010, 08:07
не айс. сделайте хотя бы так:
Код

class Files {
public:
    fstream f;
    Files(char *fname, std::ios::openmode mode)
    {
        f.open(fname, mode);
        if(!f) 
        {
            cout << "fstream error, check headers";
        }
    }
    
    ~Files()
    {
        f.close();
    }
};

Автор: sa1o 23.5.2010, 18:23
так действительно лучше) спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)