別のプロジェクトで派生クラスのコンストラクターを呼び出したときにエラーが発生しました。コードの詳細を一部省略しました。Visual Studio 2012 を使用しています。
-基本/派生クラスとテスト ファイルは 2 つの異なるプロジェクトにあります。基本/派生クラスは問題なくコンパイルできます。
・コンストラクタ行をコメント化すると、テストプロジェクトが正常にコンパイルできるようになりました。
-Test.cpp は、DerivationFunction ファイル内の他のコンストラクターとうまく連携します。
// Test.cpp
#include "DerivationFunction.h"
Child con(123, 123); // error LNK2019: unresolved external symbol "public: __thiscall Child::Child(unsigned short,unsigned int)" (??Child@@QAE@GI@Z) referenced in function _main
基本クラスと派生クラスのヘッダー ファイル:
// DerivationFunction.h
class Base
{
public:
virtual void AppendEnums() = 0;
static int CopyBuffer();
uint16 GetFeatureID();
protected:
uint16 baseValue;
static int Copy();
};
// Child class
class Child : public Base
{
public:
uint32 childValue;
Child(uint16 featureID, uint32 value);
void AppendEnums();
};
ソースファイル:
// DerivationFunction.cpp
int Base::CopyBuffer()
{
return 0;
}
uint16 Base::GetFeatureID()
{
return baseValue;
}
int Base::Copy()
{
return 0;
}
// Child class
Child::Child(uint16 featureID, uint32 value)
{
baseValue = featureID;
childValue = value;
}
void Child::AppendEnums()
{
}