Определение конструктора в файл заголовка и файл реализации (.cpp)

Я могу определить тело конструктора класса в файле class .h или в файле реализации .cpp . То же самое относится и к любым функциям-членам: они могут быть определены в файле заголовка или просто объявлены там, а затем определены в файле cpp.

Однако я обнаружил, что если мне нужно включить такие файлы заголовков классов в разные проекты (это означает, что в конечном итоге код, использующий файл заголовков, оказывается в другой DLL ), то фактическая реализация в файле заголовка вызывает некоторые головные боли при компиляции (не при компоновке ... я даже не дошел до этого). Почему? Что ж, я не буду вдаваться в подробности, но компилятор, очевидно, пытается разрешить все функции, которые могут быть определены в других файлах заголовков и т. Д., Вынуждая бедного разработчика начать извлекать различные файлы заголовков и т. Д.

Не Всегда лучше держать файлы заголовков свободными от какой-либо реализации и просто использовать их для «объявлений»? Это упростило бы включение их в более чем один проект без необходимости таскать с собой много лишнего мусора.

Что вы думаете об этом?

29
задан Duncan Jones 14 November 2018 в 08:54
поделиться