下面是我编写的一些代码的简化版本。该代码到目前为止工作正常
类
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&
时,它给了我错误:据我所知,只要在声明和定义中都使用const,就不会导致此错误。
所以我的问题是:出了什么问题以及如何解决?
最佳答案
该错误表明,实际上您没有更改头文件中的声明,也没有在更改后重新编译所有源文件。
仔细检查您是否确实已将其更改为头文件中的const OtherClass&
。然后重新编译整个项目,即不仅要编译class.cpp,还要重新编译main.cpp。
关于c++ - 常数引用参数导致无法解析的外部符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22974250/