Witam, mam mały problem. Chciałbym, aby w mojej grze dane pliku zewnętrznego były wczytywane do stałych dla różnych klas. Można by było w nim ustawić np. rozdzielczość, jednak określenie wartości stałych musi być przed funkcją główną, tak aby działały we wszystkich klasach. Jak mogę to najrozsądniej rozwiązać?
Z góry dzięki za wskazówki.
0
0
#include <iostream>
using namespace std;
struct Reader
{
class RealReader
{
private:
int Czas; // pola do wczytania
public:
RealReader(const char *FileName):Czas(666)// konstruktor inicjalizuje dane domyślne i wczytuje dane z pliku
{
cout<<"Podaj czas (jak podasz literki to zostanie domyslny): ";
cin>>Czas;
cin.clear();
cin.sync();
}
int czas()const { return Czas; } // gettery
};
operator RealReader *()const
{
static RealReader R("plik.ini");
return &R;
}
RealReader *operator->()const
{
return (RealReader*)(*this);
}
};
// tego można nie dawać, wtedy czytanie odbędzie się przy pierwszym sięgnięciu po odczytaną zmienną.
Reader::RealReader *R=Reader(); // tu odbędzie się czytanie, przed main'em, można też to przenieść do main'a (f3 odwołuje się przez ta zmienną)
void f1() { cout<<"f1: "; cout<<Reader()->czas()<<endl; }
void f2() { cout<<"f2: "; cout<<Reader()->czas()<<endl; }
void f3() { cout<<"f3: "; cout<<R->czas()<<endl; }
int main()
{
cout<<"main"<<endl;
f1();
f2();
f3();
cin.sync();
cin.get();
return 0;
}