以下は、私が書いたいくつかのコードの簡略化されたバージョンです。このコードはこれまでのところ正常に動作します
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;
};
}
クラス.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 を使用するコンストラクターは other を変更しないため、const にするのが適切です。
しかし、.cpp と .h の両方でコンストラクターを使用するように変更するとconst OtherClass&
、エラーが発生します。
エラー LNK2019: 未解決の外部シンボル "public: __thiscall myNamespace::myClass::myClass(class myNamespace::OtherClass &,unsigned int,unsigned int)" (??0CarbonMatrix@molecule@@QAE@AAVCarbonString@1@II@Z)関数 _wmain path\main.obj で参照
私の知る限り、 const を宣言と定義の両方で使用する限り、このエラーは発生しません。
だから私の質問:何がうまくいかず、それを修正する方法は?