C ++ and Objective-C are very different in this regard.
Objective-C uses messaging to implement an object method call, which means the method is allowed at run time, which allows reflection and delegation.
++ V- , , . , , .
, RTTI, , .
void callFunc(generic_object * obj) {
specific_object * spec_obj = dynamic_cast<specific_object*>(obj);
if (spec_obj != NULL) {
spec_obj->method();
}
}
Edit:
nacho4d, :
typedef void (specific_object::*ptr_to_func)();
void callFunc(generic_object * obj, ptr_to_func f) {
specific_object * spec_obj = dynamic_cast<specific_object*>(obj);
if (spec_obj != NULL) {
((*spec_obj).*f)();
}
}