Hi all, I am new to this forum and generally any programming help forum for that matter. I have a case where i want to maintain both C and C++ api library. So therefore i choose to make my C++ support a thin wrapper around the C code. However, i do not know what is the most effective way to achieve this without unnecessary memory and performance overhead. Below is an example case. /*Begin Code Sample*/ /*Start time.h*/ struct Time { int seconds, int nanoseconds }; void timeAdd(struct Time* time, struct Time* delta); void timeSub(struct Time* time, struct Time* delta); /*End time.h*/ /*Start timer.h*/ struct Timer { struct Time time; void (*callback)(struct Timer *timer); }; void timerSetCallback(struct Timer *timer, void (*callback)(struct Timer *timer)); void timerStart(struct Timer *timer); void timerStop(struct Timer *timer); /*End timer.h*/ /*Start time.hxx*/ namespace C { #include "time.h" } class Time { public: Time() { m_time.seconds = 0; m_time.nanoseconds = 0; }; ~Time(){}; int seconds(){return m_time.seconds;} int nanoseconds(){return m_time.nanoseconds;} void setSeconds(int seconds){m_time.seconds = seconds}; void setNanoseconds(int nanoseconds){m_time.nanoseconds = nanoseconds}; void add(Time &time){C::timeAdd(&m_time, &time.m_time);}; void sub(Time &time){C::timeSub(&m_time, &time.m_time);}; protected: C::Time m_time; }; /*End time.hxx*/ /*Start timer.hxx*/ #include "timer.h" class Timer : public Time { public: Timer():Time(){m_timer.callback = &Timer::callback;}; ~Timer(){C::timerStop(&m_timer);}; start(){m_timer.time = m_time; C::timerStart(&m_timer);}; stop(){C::timerStop(&m_timer);}; protected: static void callback(struct Timer *timer); C::Timer m_timer; }; /*End Code Sample*/ Now while this works for this simple case, it has a few drawbacks like the additional memory used to allocate m_time in class Time when all of struct Time api's would have even worked for struct Timer and hence struct Time m_time could have been "replaced" by struct Timer m_time but instead both exist in class Timer. It also is the simpler of the cases where the struct sizes are relatively small and the call to Timer::start() was easily managed by a copy of the struct. So now, my question is how can c++ wrappers be written for such cases without the additional memory overhead? Given their similarity, I definitely want class Timer to be a subclass of class Time! However, i do have the flexi