哪里用得着如此去使用这个方法,你既然已得到了hello的一个对象,使用hello.function不就可以操作了吗,当然,此里应该把function声明为公共类型的变量。

解决方案 »

  1.   

    把void (*pfun)()定仪为全局变量。
      

  2.   

    To:zzh
    程序中有一个循环,该循环要根据一BOOL变量(flag)去执行函数,
    如果 flag==TRUE 就执行 FunA,如果 flag==FALSE 就执行 FunB,
    如果循环很多次,那么肯定要判断很多次,代码效率肯定不好,
    如果在循环外判断一次然后将函数指针指向FunA或FunB,就不一样了。To:allex
    定义为全局变量<void (Hello::*pfun)();>也不行。提示(*pfun)();有两个错误:
    error C2171: '*' : illegal on operands of type 'void (__thiscall Hello::*)(void)
    error C2064: term does not evaluate to a function
      

  3.   

    <void (Hello::*pfun)();>这叫全局变量吗?你把我那句放到第一行。不要画蛇添竹!!
      

  4.   

    放你void (*pfun)();这一句更不行,在 pfun = function; 处有如下错误:
    error C2440: '=' : cannot convert from 'void (__thiscall Hello::*)(void)' to 'void (__cdecl *)(void)'你干脆把我上面那段程序COPY过去调试一下吧,OK?
      

  5.   

    你才给十分,真不想告诉你。呵呵。不过......,你把function定义成类的静态成员就行了。下面是我的程序。我试过了,没有问题。#include "stdafx.h"
    #include "stdio.h"class Hello
    {
    public:
    static void function();  // 呵呵。
    void test();
    };void Hello::function()
    {
    printf("Hello World!\n");
    }void Hello::test()
    {
    void (*pfun)(); // 编译提示此处错误
    pfun = function;
    (*pfun)(); // 编译提示此处错误
    }void main()
    {
    Hello hello;
    hello.test();
    }
      

  6.   

    你才给十分,真不想告诉你。呵呵。不过......,你把function定义成类的静态成员就行了。下面是我的程序。我试过了,没有问题。#include "stdafx.h"
    #include "stdio.h"class Hello
    {
    public:
    static void function();  // 呵呵。
    void test();
    };void Hello::function()
    {
    printf("Hello World!\n");
    }void Hello::test()
    {
    void (*pfun)(); // 编译提示此处错误
    pfun = function;
    (*pfun)(); // 编译提示此处错误
    }void main()
    {
    Hello hello;
    hello.test();
    }
      

  7.   

    呵呵,记错了,把FUNCTION定义全局涵数。
      

  8.   

    我在一个类里面包装了几百个函数,原来是通过switch,case来调用的,现在可以使用函数矩阵了,但是静态的函数怎么处理成员变量呢?