0

別のプロジェクトで派生クラスのコンストラクターを呼び出したときにエラーが発生しました。コードの詳細を一部省略しました。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()
{
}
4

2 に答える 2

1

これらのクラスを別のプロジェクトで使用する場合は、ソース全体 (ヘッダーと cpp ファイル) を含めてビルドするか、DLL プロジェクトからエクスポートして他のプロジェクトにインポートします。

于 2013-06-27T14:25:17.513 に答える