[SFML] Acces violation reading location
Ostatnio zmodyfikowano 2016-05-01 21:22
marc_xxx Temat założony przez niniejszego użytkownika |
[SFML] Acces violation reading location » 2016-04-23 22:00:59 Siema. Mam problem ze swoją klasą Button. Otóż w konstruktorze chcę stworzyć prostokąt o takich samych rozmiarach jak teskt. Gdy pobieram, za pomocą funkcji getLocalBounds() klasy sf::text, to debugger wyrzuca mi błąd "Acces violation reading location ....". To moja klasa button: class Button : public VInteractiveObject { public: Button( std::string ButtonTittle ); ~Button(); void Draw( sf::RenderWindow & gameWindow ) override; void SetPosition( sf::Vector2f Coords ); private: sf::RectangleShape buttonShape; sf::Text buttonTittle; void MouseOverAction( sf::Event PEvent ) override; };
Button::Button( std::string ButtonTittle ) { sf::FloatRect textBox; this->buttonTittle.setFont( ResourceManager::getInstance().getButtonFont() ); this->buttonTittle.setString( ButtonTittle ); textBox = this->buttonTittle.getLocalBounds(); this->buttonTittle.setOrigin(( textBox.width / 2.0f ),( textBox.height / 2.0f ) ); this->buttonTittle.setPosition( 512.0f, 384.0f ); this->buttonTittle.setColor( sf::Color::Color( 150, 0, 128 ) ); this->buttonShape.setSize( sf::Vector2f(( textBox.width + 4.0f ),( textBox.height + 15.0f ) ) ); this->buttonShape.setOrigin(( this->buttonShape.getSize() ) / 2.0f ); this->buttonShape.setPosition( this->buttonTittle.getPosition() ); this->buttonShape.setFillColor( sf::Color::Green ); }
W linii textBox = this->buttonTittle.getLocalBounds(); występuje owy bład. Gdzieś tam w klasie MainMenu przechowuję listę przycisków, które dodaję w tej sposób: this->Buttons.push_back( Button( "New Game" ) ); Proszę o pomoc |
|
pekfos |
» 2016-04-24 01:19:00 debugger wyrzuca mi błąd "Acces violation reading location ...." |
A dalej co? Na pewno potrafisz korzystać z debuggera..? |
|
marc_xxx Temat założony przez niniejszego użytkownika |
» 2016-04-24 02:22:02 Rzuca mi jakiś wyjątek. |
|
pekfos |
» 2016-04-24 14:31:25 Można to i tak ująć.. To podaj chociaż więcej kodu. Co to jest to ResourceManager::getInstance().getButtonFont()? |
|
marc_xxx Temat założony przez niniejszego użytkownika |
» 2016-05-01 21:22:42 Chciałem stworzyć klasę opartą na wzorcu singleton. Klasa odpowiada za zarządzanie zasobami - na razie prosta. Przypuszczam, że właśnie z tą klasą jest problem. Wstawiam kod klasy ResourceManager. ResourceManager.h: class ResourceManager { public: const inline sf::Font & getButtonFont() { return buttonsFont; } const inline sf::Image & getMainMenuHeader() { return menuBackground; } void LoadResources(); static ResourceManager & getInstance(); private: ResourceManager(); ~ResourceManager(); static sf::Font buttonsFont; static sf::Image menuBackground; }; ResourceManager.cpp #include "ResourceManager.h"
sf::Font ResourceManager::buttonsFont; sf::Image ResourceManager::menuBackground;
ResourceManager::ResourceManager() { }
ResourceManager::~ResourceManager() { }
void ResourceManager::LoadResources() { if( !( buttonsFont.loadFromFile( "media/fonts/arial.ttf" ) ) ) { return; } }
ResourceManager & ResourceManager::getInstance() { static ResourceManager singleton; return singleton; }
Funkcja ładująca zasoby odpalana jest zaraz po wystartowaniu gry - w klasie Game. |
|
« 1 » |