下面是我编写的一些代码的简化版本。这段代码到目前为止工作正常
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:__ thishisall myNamespace :: myClass :: myClass(class myNamespace :: OtherClass&,unsigned int,unsigned int)“ (?? 0CarbonMatrix @ molecule @@ QAE @ AAVCarbonString @ 1 @ II @ Z)在 function _wmain path \ main.obj
据我所知const只要在声明和定义中使用它们就不会导致此错误。
所以我的问题:出了什么问题以及如何解决它?
答案 0 :(得分:2)
该错误表明您实际上没有更改头文件中的声明,或者在更改后没有重新编译所有源文件。
仔细检查您是否确实在头文件中将其更改为const OtherClass&
。然后重新编译整个项目,即不仅是class.cpp,还包括main.cpp。