there is something else to bear in mind. if you have implementation code in a header file, and you include that header file in two separate source files somewhere, and compile those into two object files that you then try to link, unless your implementations are iniline, you will get linking errors due to multiply defined symbols... sounds obscure, but it's ...