Projektuje na razie klasy i rozmyślam o ich implementacji. Natrafiłem na pewne trudności i sposoby ich rozwiązania, oto one:
- Rozwiązanie projektowe managera zasobów:
- Pierwsza, przechowywać zasoby w specjalizowanych managerach dla każdego typu;
- Druga, Stworzyć pojedynczą "mapę" na na obiekty typu IResource(w tej klasie zarezerwować pole dla typu zasobu), każdy zasób dziedziczy po niej. I wystarczy przy pobieraniu rzutować na wybrany typ;Wybrałem to rozwiązanie!!!
- Klasa czcionki i problem z funkcją w stylu printf()
- Rozwiązanie 1:
- Wyszedłem od takiego prototypu:
void DrawTextf(int x, int y, int flags, const char * string, ...)
- Ale nie można przekazać do funkcji tego "...", więc można by zastosować vsprintf() do którego można przekazać va_list i dzięki temu można wszystko połączyć i wykorzystać DrawText();
- Niestety wadą tego rozwiązania jest to że musimy znać rozmiar bufora do którego zapisujemy.
- Rozwiązanie 2:
- skorzystać z Boost Format library i stworzyć funkcję przyjmującą taki obiekt :
DrawTextf( int x, int y, int flags ,boost::format));
Musimy? Jesteś pewien? _vscprintf ;)
OdpowiedzUsuńOgólnie nie jestem zwolennikiem Boosta(za dużo szablonów i zbyt kobylaste) więc odradzam rozwiązanie 2.