Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как инициализовать константный член класса из потока?

87K
05 июня 2015 года
Rseny
8 / / 28.05.2015
hi!
Инициализировать константную переменную при помощи потока, когда она не является членом класса, я умею.
Например так:
 
Код:
const int var = [] (std::ofstream& in) -> int {
                  int tvar;
                  in >> tvar;
                  return tvar;
                } ();
А как реализовать подобное поведение для члена класса?
 
Код:
class A{
 public:
  A() {
    std::ofstream in("filename.ex");
    in >> var;
  }
 private:
  int var;
};
326
06 июня 2015 года
sadovoya
757 / / 19.11.2005
Константы инициализируют в списке инициализации конструктора. Можно и лямбду как инициализатор использовать.
Думаю, конструктору все-же по ссылке лучше передать файловый поток, впрочем ваши цели мне не ясны..
Код:
#include <iostream>
#include <fstream>

class A {
public:
    A(std::ifstream& fs) : var([&fs]()->int {int i; fs>>i; return i;}()) {
    };
    void print() {
        std::cout << var << std::endl;
    }
private:
    const int var;
};

int main() {
    std::ifstream fs("filedat.txt");
    A a(fs), b(fs);
    a.print();
    b.print();
    fs.close();
    return 0;
}
P.S. Не путайте ofstream и ifstream.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог