导致未解析的外部符号的常量引用参数

时间:2014-04-09 21:25:51

标签: c++ reference const unresolved-external const-reference

下面是我编写的一些代码的简化版本。这段代码到目前为止工作正常

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只要在声明和定义中使用它们就不会导致此错误。

所以我的问题:出了什么问题以及如何解决它?

1 个答案:

答案 0 :(得分:2)

该错误表明您实际上没有更改头文件中的声明,或者在更改后没有重新编译所有源文件。

仔细检查您是否确实在头文件中将其更改为const OtherClass&。然后重新编译整个项目,即不仅是class.cpp,还包括main.cpp。