O_o

This may sound weird because it isn't exactly technical, but stay with me.

There is no `int figura3::retorna(void)' to call because there is no `figura3' with which to call it and there is no `figura3' because one can't yet exist.

Yea, that doesn't sound to bad, but I'm not sure what you are trying to do as the code has a some errors and you seem to be trying to convert from one derived class to a sibling instead of a parent.

I can't really help until I know what you are trying to do, but other will be along. Until then, if you want to invoke a method, you need an object, an instance, of the type to which that method belongs. That object can be an instance of a class, contained as a member of a class, or as a parent of class. One way or the other, you need that object.

Soma