vector subscript out of range
Ostatnio zmodyfikowano 2020-07-07 10:23
BraveRat Temat założony przez niniejszego użytkownika |
vector subscript out of range » 2020-07-06 23:47:09 Witam to znowu ja. Próbowałem przerobić w sfml'u klasę na mapę kafelkową na taką rysującą max 5 obrazków (z jednej tekstury). class Bushes : public sf::Drawable , public sf::Transformable { public: bool load( const std::string & name, sf::Vector2u size, sf::Vector2f position1, sf::Vector2f position2, sf::Vector2f position3, sf::Vector2f position4, sf::Vector2f position5, int count, sf::Vector2f rectMove ) { if( !m_tileset.loadFromFile( name ) ) return false; if( count >= 6 ) return false; m_vertices.setPrimitiveType( sf::Quads ); m_vertices.resize( 4 ); sf::Vector2f currentPosition; for( unsigned int i = 0; i < count; ++i ) { switch( count ) { case 0: currentPosition = position1; break; case 1: currentPosition = position2; break; case 2: currentPosition = position3; break; case 3: currentPosition = position4; break; case 4: currentPosition = position5; break; } sf::Vertex * quad = & m_vertices[ 4 ]; quad[ 0 ].position = sf::Vector2f( currentPosition.x, currentPosition.y ); quad[ 1 ].position = sf::Vector2f(( size.x + currentPosition.x ), currentPosition.y ); quad[ 2 ].position = sf::Vector2f(( size.x + currentPosition.x ),( size.y + currentPosition.y ) ); quad[ 3 ].position = sf::Vector2f( currentPosition.x,( size.y + currentPosition.y ) ); quad[ 0 ].texCoords = sf::Vector2f( rectMove.x, rectMove.y ); quad[ 1 ].texCoords = sf::Vector2f( size.x, rectMove.y ); quad[ 2 ].texCoords = sf::Vector2f( size.x, size.y ); quad[ 3 ].texCoords = sf::Vector2f( rectMove.x, size.y ); } return true; } private: virtual void draw( sf::RenderTarget & target, sf::RenderStates states ) const { states.transform *= getTransform(); states.texture = & m_tileset; target.draw( m_vertices, states ); } sf::VertexArray m_vertices; sf::Texture m_tileset; };
i w mainie'e Bushes bushes1; if( !bushes1.load( "bushes.png", sf::Vector2u( 205, 219 ), sf::Vector2f( 0, 0 ), sf::Vector2f( 0, 300 ), sf::Vector2f( 300, 0 ), sf::Vector2f( 300, 300 ), sf::Vector2f( 0, 0 ), 4, sf::Vector2f( 0, 0 ) ) ) return - 1;
Po poróbie uruchomienia wyrzuca błąd z nagłówka (w nowym oknie jeśli to istotne). Gdzie popełniłem błąd? |
|
pekfos |
» 2020-07-07 06:15:57 Przekraczasz zakres wektora. |
|
BraveRat Temat założony przez niniejszego użytkownika |
» 2020-07-07 10:23:35 Ok dzięki za pomoc i cierpliwość |
|
« 1 » |