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


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/

10-11 18:39