本帖最后由 lint2008 于 2009-12-15 10:19:09 编辑

解决方案 »

  1.   

    num是int型别;和指针嘛关系;而参数a至始至终没传递过;
      

  2.   


     参数A传递了,传的 select指针.
      

  3.   


    typedef void (*FUNC)(int *a, int num);
    class Object
    {
    public:
    Object(){ numOfSelect = 1; select = 0;}
    virtual ~Object(){}
    public:
    int *select;
    int numOfSelect;
    FUNC func;
    public:
    void CreateObject( FUNC processfunc ) {  func = processfunc; }
    void Process() { (*func)( select, numOfSelect );}
    }; void selectProcess( int *a, int num )
    {
    num++;
    int i = 0;
    i++;  //断点到这个位置,num为2, 正常,VS2008
    }
      

  4.   

    selectProcess()裡面的代碼有問題吧。
      

  5.   


    typedef void (*FUNC)(int *a, int num);
    int p = 100;
    class Object
    {
    public:
    Object(){ numOfSelect = 1; select = &p;}  //传个整数的地址给select
    virtual ~Object(){}
    public:
    int *select;
    int numOfSelect;
    FUNC func;
    public:
    void CreateObject( FUNC processfunc ) {  func = processfunc; }
    void Process() { (*func)( select, numOfSelect );}
    }; void selectProcess( int *a, int num )
    {                   //注意,单步至此,a与num为随机
    num = *a ;  //到这个位置才有值

    int i = 0;
    i++;  //断点到这个位置,num为100, 正常,VS2008
    }