在头文件中定义如下:
void (*pOpFun[7])(CDC*);
void DrawUnit(CDC* pDC);在cpp文件中如下赋值:
pOpFun[0] = DrawUnit;
结果出现编译错误:
cannot convert from 'void (__thiscall CST_CurveCtrl::*)(class CDC *)' to 'void (__cdecl *)(class CDC *)改变DrawUnit的申明如下:
static void DrawUnit(CDC* pDC);
可以解决问题,但我不想这么做,请问还有什么办法?

解决方案 »

  1.   

    VC暂无法解决,BCB可以http://community.csdn.net/Expert/topic/4011/4011027.xml?temp=.2558863
      

  2.   

    我用下面的方法解决了赋值问题:
    void (CST_CurveCtrl::*pOpFun[7])(CDC*);
    pOpFun[0] = DrawUnit;
    (*pOpFun[i])(pdc);但做函数调用的时候却出现下面的编译错误:
    '*' : illegal on operands of type 'void (__thiscall CST_CurveCtrl::*)(class CDC *)'
    term does not evaluate to a function
    若这样调用pOpFun[i](pdc);则错误如下:
    term does not evaluate to a function
    真的解决不了吗?很急啊,老板在催了!
      

  3.   

    把DrawUnit函数做成全局函数就可以了
      

  4.   

    还有一种方法,void DrawUnit(CDC* pDC);不写进.h文件
    直接把定义放在使用函数的上面.当然也不要有CST_CurveCtrl::不正规
      

  5.   

    这样不成全局函数了,这和加static有什么分别!