ユーザーがグラフィカルオブジェクト(msペイントなど)を描画できるようにするmfcアプリケーションを構築しています。しかし、何らかの理由で、次のリンカーエラーが発生します。
CElement.obj:エラーLNK2001:未解決の外部シンボル "public:virtual void __thiscall CElement :: Draw(class CDC *)"(?Draw @ CElement @@ UAEXPAVCDC @@@ Z)。
これは、CPolygonクラスの仮想描画関数に関連するものだと思います。しかし、正確にどの帽子がそれを引き起こしていますか?
//CElement.h
class CElement : public CObject
{
public:
virtual ~CElement();
virtual void Draw(CDC* pDC);
};
注:CElementは、CPolylineやCRectangleなどの他のすべてのクラスの基本クラスとして機能します。Draw関数は仮想です-ポリモーフィズムの例です。CElementのDraw(CDC * pDC)は、派生クラスのDraw()関数によってオーバーライドされます。
class CPolygon : public CElement
{
public:
CPolygon(CPoint mFirstPoint,CPoint mSecondPoint);
~CPolygon(void);
virtual void Draw(CDC* pDC);
---------------------------------------------------------------------------------------
//CElement.cpp
#include "CElement.h"
//constructors for the class
void CPolygon::Draw(CDC* pDC)
{
pDC->MoveTo(mStartPoint);
pDC->LineTo(mEndPoint);