По сути, у вас есть определение для thing::thing(args)
в двух единицах перевода (TU), что нарушает правило единого определения (ODR) и, следовательно, ошибку.
Компоновщик точно сообщает вам, какие TU задействованы: otherObject.obj
и Object.obj
.
Начните просматривать otherObject.cpp
и Object.cpp
и заголовки, которые включены в эти два cpp
файла. Скорее всего, вы определили свой конструктор thing::thing(args)
в заголовочном файле, и включение этого заголовочного файла в оба этих cpp
файла приведет к нескольким определениям.
Предлагаемое решение:
Вы не можете определить конструктор в заголовочном файле. Вам необходимо добавить его в ваш файл cpp
вместе с другими функциями-членами класса. Если вам нужно добавить определение конструктора в заголовок, вы должны пометить его inline
, учитывая, что вы не показали свой код, я не вижу причин применять второй подход.