Постоянный опорный параметр, вызывающий неразрешенный внешний символ

Ниже приведена упрощенная версия кода, который я написал. пока этот код работает нормально

class.h

namespace myNamespace
{
class myClass
{
public:

myClass(unsigned width, unsigned height);
myClass(OtherClass& other, unsigned width, unsigned height);
~myClass(){};

private:
unsigned width;
unsigned height;
};
}

class.cpp

#include "class.h"
namespace myNamespace
{
myClass::myClass(unsigned width, unsigned height)
{
//code
}

myClass::myClass(OtherClass& other, unsigned width, unsigned height) : myClass(width, height)
{
//code
}
}

(OtherClass определен в другом месте внутри myNamespace и включен)

конструктор, который использует OtherClass, не изменяет другие, поэтому было бы целесообразно сделать его const.

Но когда я изменяю конструктор в .cpp и .h, чтобы использовать const OtherClass& это дает мне ошибку:

ошибка LNK2019: неразрешенный внешний символ «public: __thiscall
myNamespace :: myClass :: myClass (класс myNamespace :: OtherClass &без знака
int, unsigned int) «(?? 0CarbonMatrix @ молекулы @@ QAE @ AAVCarbonString @ 1 @ II @ Z), на которые есть ссылки в
функция _wmain путь \ main.obj

Насколько я знаю, const не должен вызывать эту ошибку, если вы используете их как в объявлении, так и в определении.

Итак, мой вопрос: что идет не так и как это исправить?

1

Решение

Эта ошибка указывает на то, что вы фактически не изменили объявление в заголовочном файле или не перекомпилировали все исходные файлы после его изменения.

Дважды проверьте, что вы действительно изменили его на const OtherClass& в заголовочном файле. Затем пересоберите все проект, то есть не только class.cpp, но и main.cpp.

2

Другие решения

Других решений пока нет …