So that's why you should have only declarations and no definitions in header files. A function in a header file that is included more than once leads to confusion for the linker. But what about class definitions in a header file that is included twice? Doesn't that lead to confusion as well?