Я почти уверен, что вы просто забыли добавить файл в процесс компиляции. Будьте осторожны с ошибкой, так как это может вызвать общую боль.
Всякий раз, когда у вас есть разные модули компиляции (например, классы, каждый со своим .h / .cpp), ваши классы должны знать интерфейсы, причину, по которой вы обычно включаете заголовочные файлы, но компилятор также должен знать реализации, чтобы он мог связать ваш двоичный файл.
Таким образом, вам нужно будет вызвать компилятор, передав ему все файлы .cpp в вашем проекте, иначе он не сможет сообщить вам, что вы ссылаетесь на неосуществленные фрагменты.