"pure virtual method called, terminate
terminate called without an active exception
This application has requested the runtime to terminate it in an unusual way."
Taki oto błąd dostaje w konsoli podczas dzialania mojej aplikacji. Pomoże mi ktoś ogarnąć sytuacje, dlaczego tak się dzieje, i ew jak przekształcić mój kod żeby działał prawidłowo?:) Wujek Google dał mi do zrozumienia że to błąd przy konstruktorze, lub coś w tym stylu, tylko że ja nie konstruowałem wlsnej classy tylko używam gotowych z biblioteki SFML. Poniżej wkleje kod. Generalnie to miała być prosta gierka, okno podzielone na 3 pionowe pasy, w ktorych beda pojawialy sie objekty ładowane w 3 vectory. Problem pojawił się na samym początku, przy pierwszym z nich, gdy przypuszczam że ma dojść do dodania nowego sf::RectangleShape do vectora. Będe wdzięczny za jakąkolwiek pomoc.:)
Edit: Błąd jest spowodowany na 99% przez column1Vec.pop_back();
,a nie jak myslalem przy powtornym push_back()
, nadal nie mam pojęcia dlaczego nie mogę usunąć tego obiektu...
#include <SFML/Graphics.hpp>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
sf::RenderWindow w( sf::VideoMode( 300, 600),"Three lines v0.1");
// CREATING 3 VECTORS
vector<sf::RectangleShape> column1Vec;
vector<sf::RectangleShape> column2Vec;
vector<sf::RectangleShape> column3Vec;
bool onCreateSquare = 1;
while( w.isOpen())
{
sf::Event e;
while( w.pollEvent(e))
{
switch ( e.type)
{
case sf::Event::Closed:
w.close();
break;
case sf::Event::KeyPressed:
if (e.key.code == sf::Keyboard::Escape)
w.close();
}
}
// CREATE SQUARE IN STARTING POSITION
if (onCreateSquare == true)
{
sf::RectangleShape square(sf::Vector2f(100, 100));
square.setPosition(sf::Vector2f(0, 0)); // Starting position
column1Vec.push_back(square);
column1Vec[0].setFillColor(sf::Color::Red);
onCreateSquare = false;
}
// IF COLUMN1VEC[0] EXIST:
column1Vec[0].move(sf::Vector2f(0.f, 0.1f));
// CHECKING COLISION, TURN ON ON_CREATESQUARE (IF)
if ( column1Vec[0].getPosition().y >= 600)
{
column1Vec.pop_back();
onCreateSquare = true;
}
// CHECKING SQUARE'S COORDINATES IN CONSOLE
cout<<column1Vec[0].getPosition().x<<" "<<column1Vec[0].getPosition().y<<endl;
// DRAWING
w.clear();
w.draw(column1Vec[0]);
w.display();
}
return 0;
}