Как инициализовать константный член класса из потока?
Инициализировать константную переменную при помощи потока, когда она не является членом класса, я умею.
Например так:
Код:
const int var = [] (std::ofstream& in) -> int {
int tvar;
in >> tvar;
return tvar;
} ();
int tvar;
in >> tvar;
return tvar;
} ();
Код:
class A{
public:
A() {
std::ofstream in("filename.ex");
in >> var;
}
private:
int var;
};
public:
A() {
std::ofstream in("filename.ex");
in >> var;
}
private:
int var;
};
Думаю, конструктору все-же по ссылке лучше передать файловый поток, впрочем ваши цели мне не ясны..
Код:
#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;
}
#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;
}