Po pierwsze: taka drobna uwaga. Skoro nagłówki są w katalogach headers/whatever, to *.cpp też niech będą np. w src/whatever zamiast bezpośrednio w katalogach na równym poziomie z tym przechowywanym nagłówki.
Przecież z czasem to będzie tak rozległe że linia ze ścieżką będzie bardzo długa, lub będzie ich bardzo, bardzo dużo.
Podczas pisania raczej nie będzie ci to przeskadzać, bo kolejne #includy będziesz dodawał sukcesywnie, z czasem. Zużytymi liniami kodu nie powinieneś się przejmować. Z myślą raczej o użytkowniku niż dla użytku w kodzie, możesz stworzyć (wypadałoby) pliki nagłówkowe zawierające same dyrektywy #include plików z danego katalogu. Np. logic.h - i tutaj #includy wszystkich nagłówków mieszczących się w /logic. Wtedy użytkownik pisze sobie #include <.../logic.h> i ma wszystko.