Streamlined Example of the problem:
#include <string>
#include <deque>
#include <iostream>
class Action{
    public:
    std::string name;
    Action(std::string name){
        this->name = name;
    }
};
class Ability : public Action{
public:
    int bar;
    Ability(std::string name) : Action(name){}
};
int main(){
    std::deque<Action*> foo;
    Ability test("asdf");
    test.bar = 122;
    foo.push_back(&test);
    std::cout << foo.at(0)->bar << std::endl;
    return 0;
}
This creates an error, that there is no 'bar' member of 'Action'.
I realise that this relates to object slicing and I've attempted to use pointers, which allows the vector to push back the 'Ability' object but I cannot access its 'bar' member.
What am I missing?
 
     
    