error LNK2019: 无法解析的外部符号
error LNK2019: 无法解析的外部符号 "protected: __thiscall CLine::CLine(void)" (??0CLine@@IAE@XZ),该符号在函数 "public: static class CObject * __stdcall CLine::CreateObject(void)" (?CreateObject@CLine@@SGPAVCObject@@XZ) 中被引用Elements.obj
我用的是VS2008.Net。下面是部分代码:
Elements.h文件的部分代码:
#pragma once
class CElement : public CObject //CElement类的定义
{
DECLARE_SERIAL(CElement)
protected:
COLORREF m_Color;
CRect m_EnclosingRect;
int m_Pen;
public:
virtual ~CElement();
virtual void Draw(CDC* pDC,CElement* pElement=0){}
virtual void Move(CSize& aSize){}
CRect GetBoundRect();
virtual void Serialize(CArchive& ar); //类的串行化函数Serialize()
protected:
CElement(void);
};
class CLine : public CElement
{
DECLARE_SERIAL(CLine)
public:
~CLine(void);
virtual void Draw(CDC* pDC,CElement* pElement=0);
virtual void Move(CSize& aSize);
CLine(CPoint Start,CPoint End,COLORREF aColor,int PenWidth);
virtual void Serialize(CArchive& ar);
protected:
CPoint m_StartPoint;
CPoint m_EndPoint;
CLine(void);
};
Elements.cpp的部分代码:
// Elements.cpp : 实现文件
#include "stdafx.h"
#include <cmath>
#include "Sketcher.h"
#include "Elements.h"
#include "OurConstants.h"
IMPLEMENT_SERIAL(CElement,CObject,VERSION_NUMBER)
IMPLEMENT_SERIAL(CLine,CElement,VERSION_NUMBER)
// CElement
CElement::CElement()
{
}
void CElement::Serialize(CArchive& ar)
{
CObject::Serialize(ar);//调用基本类函数
if (ar.IsStoring())
{
ar << m_Color
<< m_EnclosingRect
<< m_Pen;
}
else
{
ar >> m_Color
>> m_EnclosingRect
>> m_Pen;
}
}
CElement::~CElement()
{
}
// CElement 成员函数
CLine::CLine(CPoint Start,CPoint End,COLORREF aColor,int PenWidth) //CLine类的构造函数
{
m_StartPoint=Start; //设置直线起点,储存在由基类CElement继承而来的变量m_StartPoint中
m_EndPoint=End; //设置直线终点
m_Color=aColor; //设置直线颜色
m_Pen=PenWidth; //设置画笔宽度
//定义封闭矩形
m_EnclosingRect=CRect(Start,End); //设置封闭矩形的起点和终点
m_EnclosingRect.NormalizeRect(); //把封闭矩形规范化
}
void CLine::Serialize(CArchive& ar)
{
CElement::Serialize(ar);//调用基本类函数
if (ar.IsStoring())
{
ar << m_StartPoint //存储第一个点
<< m_EndPoint; //最后一个点
}
else
{
ar >> m_StartPoint //第一个点
>> m_EndPoint; //最后一个点
}
}
CLine::~CLine(void)
{
}
[解决办法]
无参数的构造函数没有实现
[解决办法]
在.cpp里添加以下函数
CLine::CLine() //CLine类的构造函数
{
}
[解决办法]
对比分析一下就知道了,你的elment是没有问题的。