you can't create an instance of fsm<>
with new, since it's abstract - it contains the pure virtual method virtual void update()=0;
you can for example:
fsm<pin_steps> *one...
one = new deri_pinza;
this is legal - and go on from here...
EDIT - followup to our comments:
if you need a more general deri pinza (a generic one), it can be defined as:
template <typename STEP_TYPE>
class deri_pinza_gen : public fsm<STEP_TYPE> {
private:
bool cmd_prelevamento_done;
public:
deri_pinza_gen(STEP_TYPE step) : fsm<STEP_TYPE>(step){
cmd_prelevamento_done = false;
};
virtual void update();
virtual ~deri_pinza_gen();
};
and then:
mylist->insert( new deri_pinza_gen<pin_steps>(ST_PIN_BOOT) );
mylist->insert( new deri_pinza_gen<pin_steps>(ST_PIN_CHECK_MOTORE) );
ANOTHER_list->insert( new deri_pinza_gen<ANOTHER_pin_steps>(ANTHER_enum_item) );
...
are valid insertions. I have declared update() virtual here, so you can derive your deri_pinza from this one, if you need it.