В настоящее время я пишу программу и не могу понять, почему я получил ошибку (примечание: я уже исправил ее, мне интересно, ПОЧЕМУ была ошибка и что это означает, включая файлы .h).
По сути, моя программа была структурирована следующим образом:
Текущий файл, с которым я работаю, я назову Current.cc
(который является реализацией Current.h
).
Current.cc
включал заголовочный файл с именем CalledByCurrent.h
(с которым связана реализация, называемая CalledByCurrent.cc
).CalledByCurrent.h
содержит определение класса.
В CalledByCurrent.cc
была определена неклассовая функция с именем thisFunction()
.thisFunction()
не был объявлен в CalledByCurrent.h
, так как на самом деле он не был функцией-членом класса (просто маленькая вспомогательная функция).В Current.cc
мне нужно было использовать эту функцию, поэтому я просто переопределил thisFunction()
в верхней части Current.cc
.Однако, когда я сделал это, я получил сообщение об ошибке, сообщив, что функция была дублирована.Почему это так, когда myFunction()
даже не было объявлено в CalledByCurrent.h
?
Таким образом, я просто удалил функцию из Current.cc
, теперь предполагая, что Current.cc
имел доступ к thisFunction()
из CalledByCurrent.cc
.Однако когда я сделал это, я обнаружил, что Current.cc
не знал, о какой функции я говорил.Какого черта?Затем я скопировал определение функции для thisFunction()
в начало моего CalledByCurrent.h
файла, и это решило проблему.Не могли бы вы помочь мне понять это поведение?В частности, почему он подумал, что был дубликат, но он не знал, как использовать оригинал?
ps - я прошу прощения за то, как запутанный этот пост.Пожалуйста, дайте мне знать, если я что-нибудь проясню.