注册 登录
编程论坛 C++教室

请教关于作用域的问题

我是菜鸟哦 发布于 2011-10-13 09:17, 414 次点击
程序代码:
class A
{
public:
  int   RetInt()
  {
   return   100;
  }
};

class  B
{
public:

 int (A::*pFun)(void);

 void  Print(A &obj)

 {
  int val =  (obj.*pFun)();
  std::cout << "Val = " << val << std::endl;

 }
};
void main()
{
    A qwe;
    B asd;
    asd.pFun=qwe.RetInt();
    asd.Print(qwe);
    getch();
}


如上,我想通过B类来输出A中函数的返回值
则我先要获取A类中某个函数的函数地址,这一步出错
然后通过调用B的打印函数输出A中确定地址的函数返回值
哪里出错了?
1 回复
#2
rjsp2011-10-13 11:21
程序代码:
#include <iostream>

class A
{
public:
    int RetInt()
    {
        return 100;
    }
};

class B
{
public:
    int (A::*pFun)(void);
    void Print( A& obj )
    {
        int val = (obj.*pFun)();
        std::cout << "Val = " << val << std::endl;
    }
};

int main()
{
    A a;
    B b;
    b.pFun = &A::RetInt;
    b.Print( a );

    return 0;
}

1