I may be wrong, but I think the best substitution is to use polymorphism. You write an abstract class(named foo, for instance) which just declares your abstract method. Then you inherit this class and implement the abstract method in the inherited subclasses so they become concrete and can be instantiated.
Having a reference on foo(which refers in fact on an instance of a foo subclass), you can invoke the abstract method without knowing excactly the object you manipulate : you obtain the same mechanism as a function pointer, but it is more powerful.
You may also use RTTI and reflexion, but I think polymorphism is smarter.