【发布时间】:2016-09-27 03:43:43
【问题描述】:
我正在学习 Visual C++ 并从Ivor Horton's Visual book 构建“Sketcher”示例程序,我能够生成工具栏、菜单图标、提示和用一些硬编码点绘制的矩形。添加一些鼠标处理程序和对其他一些头文件的引用后,我收到此错误:error C2011: 'CElement' : 'class' type redefinition。
由于这种“重新定义”,在以前基于 CElement 的其他形状类中引发了 40 多个错误,尽管 Visual Studio 的智能感知似乎可以很好地检测到它,但在编译时似乎无法找到该类。我认为我没有遗漏任何东西,因为在我最后几次更改之前所有内容都已正确编译,但我已经用尽了我的撤消/重做历史,似乎找不到根本原因。
我已经查看了与此错误消息相关的其他一些答案,但我仍然坚持要准确指出第二次定义我的类的位置。
我的 Element.h 文件包含以下代码:
#include <algorithm>
#include "stdafx.h"
class CElement : public CObject
{
protected:
CPoint m_StartPoint; // Element position
int m_PenWidth; // Pen width
COLORREF m_Color; // Color of an element
CRect m_EnclosingRect; // Rectangle enclosing an element
// Create a pen
void CreatePen(CPen& aPen);
public:
virtual ~CElement();
virtual void Draw(CDC* pDC) {} // Virtual draw operation
// Get the element enclosing rectangle
const CRect& GetEnclosingRect() const { return m_EnclosingRect; }
protected:
// Constructors protected so they cannot be called outside the class
CElement();
CElement(const CPoint& start, COLORREF color, int penWidth = 1);
};
我的 Element.cpp 文件包含以下代码:
#include "stdafx.h"
#include "Element.h"
CElement::CElement()
{
}
void CElement::CreatePen(CPen& aPen)
{
if (!aPen.CreatePen(PS_SOLID, m_PenWidth, m_Color))
{
// Pen creation failed
AfxMessageBox(_T("Pen creation failed."), MB_OK);
AfxAbort();
}
}
CElement::~CElement()
{
}
【问题讨论】:
-
你的 stdafx.h 包含什么?
标签: c++ visual-c++ compiler-errors header-files redefinition