void CSketcherView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CClientDC aDC(this);
    //CView::OnMouseMove(nFlags, point);
if(nFlags & MK_LBUTTON){
m_SecondPoint = point;
if(m_pTempElement)
{
   if(CURVE == GetDocument()->GetElementType()){
   static_cast<CCurve*>(m_pTempElement)->AddSegment(m_SecondPoint);
       m_pTempElement->Draw(&aDC);
   return;
}
aDC.SetROP2(R2_NOTXORPEN);
m_pTempElement->Draw(&aDC);
delete m_pTempElement;
m_pTempElement = nullptr;
}
m_pTempElement = CreateElement();
m_pTempElement->Draw(&aDC);
}}一直提示m_pTempElement未定义标示符。我是照着书上来编写代码的,不知道这是怎么回事,哪位大侠知道的给说下,谢谢了!

解决方案 »

  1.   


    class CSketcherView : public CView
    {
     ....
     public:
         CPoint m_pTempElement;
     ....
    };你少了这么一句,自己查查吧
      

  2.   


    书上没有的代码没有在头文件中定义。我也试着在头文件中定义了,结果一调试就又有新的问题出现了:
    Sketcher.exe 中的 0x0092deeb 处有未经处理的异常: 0xC0000005: 读取位置 0xcdcdcdcd 时发生访问冲突网上说这是指针问题。
    我说这样定义的:
    protected:
    CElement* CreateElement(void) const;

    CElement* m_pTempElement;前面那句是书上要求定义的,后面是我自己加上去的,肯定错了,但不知道怎么该,新手求指导。
      

  3.   

    不行啊,加上去后有错误:
    1 IntelliSense: 表达式必须包含 bool 类型(或可转换为 bool) e:\mfc\sketcher\sketcher\sketcherview.cpp 171 5 IntelliSense: 表达式必须包含指针或句柄类型 e:\mfc\sketcher\sketcher\sketcherview.cpp 180 3 IntelliSense: 表达式必须包含指针类型 e:\mfc\sketcher\sketcher\sketcherview.cpp 175
      

  4.   

    可能m_pTempElement不是MFC封装类的成员变量指针,是书上作者自己增加的类的成员变量指针
    所以你定义它的头文件,并将该变量设置为共有,如下:
        类名 *m_pTempElement
      

  5.   

    你这个问题跟this指针没有一点关系