http://ru.wikipedia.org/wiki/Заголовочный_файл
http://www.citforum.ru/programming/cpp/gl4.shtml
Следующее эмпирическое правило относительно того, что следует, а что не следует помещать в заголовочные файлы, является не требованием языка, а просто предложением по разумному использованию аппарата #include.
В заголовочном файле могут содержаться:
Определения типов struct point { int x, y; }
Описания функций extern int strlen(const char*);
Определения inline-функций inline char get() { return *p++; }
Описания данных extern int a;
Определения констант const float pi = 3.141593
Перечисления enum bool { false, true };
Директивы include #include
Определения макросов #define Case break;case
Комментарии /* проверка на конец файла */
но никогда:
Определения обычных функций char get() { return *p++; }
Определения данных int a;
Определения сложных константных объектов const tbl[] = { /* ... */ }
ну а теперь кто нибудь мне всё таки объяснит как связать файлы main.cpp, func.h и func.cpp вместе, что бы небыло ошибок линковки?)))