Есть два класса: Effect, FireBall. В main содержится следующий код:
vector<Effect> effects;
...
effects.push_back(FireBall("Огненный шар"))
...
Effect состоит лишь из одного заголовка:
class Effect
{
public:
string name;
virtual void apply(int &value) = 0;
//virtual ~Effect() = 0 {};
};
FireBall.h:
#include "Effect.h"
class FireBall : public Effect
{
public:
int count;
FireBall(string _name);
void apply(int &value);
};
FireBall.cpp:
#include "FireBall.h"
FireBall::FireBall(string _name)
{
count = 10;
name = _name;
}
void FireBall::apply(int &value)
{
value -= 1;
}
На этапе компиляции вылетает ошибка C2259, Effect: невозможно создать экземпляр абстрактного класса