Can my C function directly access data in an object of a C++ class?
Sometimes. (For basic info on passing C++ objects to/from C functions, read the previous FAQ). You can safely access a C++ object’s data from a C function if the C++ class: • Has no virtual functions (including inherited virtual functions) • Has all its data in the same access-level section (private/protected/public) • Has no fully-contained subobjects with virtual functions If the C++ class has any base classes at all (or if any fully contained subobjects have base classes), accessing the data will technically be non-portable, since class layout under inheritance isn’t imposed by the language. However in practice, all C++ compilers do it the same way: the base class object appears first (in left-to-right order in the event of multiple inheritance), and member objects follow.