Callback C++ Class method from C
Encapsulate stuff that shouldn't be public
I'd rather make the callback functions private static functions of the c++ class This helps to encapsulate the nasty void*casts:
#ifdef __cplusplus
class Foo {
public:
    Foo();
    int getValue() const;
    void setValue(int value);

    void register_callbacks();

private:
    int value_;

    static int  cb_getValue(void *arg1);
    static void cb_wrapper_setValue(int value, void *arg1);
};
#endif

Implementation:
void Foo::register_callbacks() {
    register_handler(Foo::cb_getValue, Foo::cb_setValue, static_cast&lt;void *&gt;(this));
}

void Foo::cb_setValue(int value, void *arg1) {
    Foo* foo_instance = static_cast&lt;Foo*&gt;(arg1);
    foo_instance-&gt;setValue(value);
}

int Foo::cb_getValue(void *arg1) {
    Foo* foo_instance = static_cast&lt;Foo*&gt;(arg1);
    return foo_instance-&gt;getValue();
}

Usage:
Foo foo_object;
foo_object.register_callbacks();
call_cpp_get_function();
call_cpp_set_function(35);