一般为函数指针声明类型定义如下:
typedef void (*pfv) ();但是可以直接这么定义吗?如下:
void (*p) (); //p是指向某函数的指针

解决方案 »

  1.   

    可以,单一使用typedef用起来更直观一点
      

  2.   

    可以阿,看看typedef的用法就知道为什么可以了
      

  3.   

    class MyFunc
    {
    public:
    void func(int)
    {
    cout << "MyFunc::fun" << endl;
    } void static static_func()
    {
    cout << "MyFunc::static_func" << endl;
    } void const_func() const
    {
    cout << "MyFunc::const_func" << endl;
    }
    };// 测试函数指针
    void test_funcptr()
    {
    typedef void(*Func)();
    Func pF;
    pF = fun1;
    (*pF)();
    pF = fun2;
    (*pF)();
    // 注意区别
    void(*pF2)();
    pF2 = fun1;
    (*pF2)();
    pF2 = fun2;
    (*pF2)();
    }// 测试成员函数指针
    void test_memfuncptr()
    {
    MyFunc myFunc;
    typedef void (MyFunc::*mem_fun)(int);
    typedef void (*Static_Func)();
    mem_fun pF;
    Static_Func pStaF;
    pF = MyFunc::func;
    pStaF = MyFunc::static_func;
    (myFunc.*pF)(1);
    (*pStaF)(); // 注意区别
    void (MyFunc::*mem_fun2)(int);
    void (MyFunc::*mem_constfun)() const;
    mem_fun2 = MyFunc::func;
    mem_constfun = MyFunc::const_func;
    (myFunc.*mem_fun2)(1);
    (myFunc.*mem_constfun)();
    }