#include using namespace std; template class eternal { struct Data { type t; bool on; inline Data() { on = false; } }; Data dat; public: eternal(type t, char *filename); ~eternal(); type get(); void save(); void load(); void operator=(type t); char *str; }; template eternal::eternal(type init, char *filename) { str = filename; load(); if(dat.on == false) { dat.on = true; dat.t = init; } } template eternal::~eternal() { save(); } template void eternal::save() { ofstream fout(str,ios::binary); fout.write((char*)&dat,sizeof(dat)); fout.close(); } template void eternal::load() { ifstream fin(str,ios::binary); fin.read((char*)&dat,sizeof(dat)); fin.close(); } template type eternal::get() { return dat.t; } template void eternal::operator=(type x) { dat.t = x; }