Witam!
Nowy dzień nowe problemy, dzisiaj mam problem dla was pewnie trywialny, dla mnie nie taki oczywisty. Z góry mówię że głowiłem się nad tym cały wczorajszy dzień, szukałem po różnych forach i rzeczy typu konstruktor kopiujący nie działały, na stackoverflow też nie widziałem nic co by mi pomogło.
Mam klasę abstrakcyjną która się nazywa "Turret":
#pragma once
#include <SFML\Graphics.hpp>
class Turret : sf::Drawable
{
public:
Turret() {};
Turret(int, int) {};
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const = 0;
virtual void Attack()=0;
virtual float GetRange()=0;
protected:
int Damage;
float AttackSpeed;
float Range;
std::string TexturePath;
sf::Texture texture;
sf::Sprite sprite;
};
i jej dziecko:
#pragma once
#include "Turret.h"
class Cannon : public Turret
{
public:
Cannon();
Cannon(int, int);
virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const;
virtual void Attack();
virtual float GetRange();
};
W moim obiekcie mapy mam sobie vector:
std::vector<Turret*>Turrets;
Wywołuje tak:
Turrets.push_back(new Cannon(2,2));
I dochodzimy tutaj do sedna sprawy kiedy próbuje coś włożyć do vectora, push_back czy emplace_back program się po prostu wysypuje. Dodam do tego to że metody Attack() czy inne nie są zaimplementowane po prostu są w pliku .cpp ale puste, tylko draw() jest zaimplentowane.
Błąd jaki mi wyrzuca visual studio:
Exception thrown: read access violation.
std::_Vector_alloc<std::_Vec_base_types<Turret *,std::allocator<Turret *> > >::_Mylast(...) returned 0x18.