Разбираем, почему в многофайловом C++ проекте «компиляция прошла, а сборка упала»: чем отличается
declaration (обещание существования) от
definition (реальное тело/память), как устроены единицы трансляции (
translation unit), что именно проверяет компилятор и что требует линкер, и как правильно разносить объявления по
.hpp и определения по
.cpp на примере мини-проекта
TaskBook.