0

我正在构建一个 mfc 应用程序,使用户能够绘制图形对象(类似于 ms paint)。但由于某种原因,我收到以下链接器错误:

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);

}

4

1 回答 1

2

好吧,错误消息说您尚未为函数定义主体

virtual void Draw(CDC* pDC);

要么定义它,要么使类抽象,即派生类必须实现它。

virtual void Draw(CDC* pDC) { }

或者

virtual void Draw(CDC* pDC) = 0;
于 2012-12-11T11:20:40.303 回答