[cpp] (no subject)

Arcane xjin at eta.com.cn
Tue Sep 5 15:39:55 CST 2006


New Page 1你好,
    能不能详细说一下return 一个 void (*pfunc)()方法?我这方面知识比较弱。


谢谢。

Arcane
  ----- Original Message ----- 
  From: DarkSpy 
  To: C++ Discuss Group 
  Sent: Tuesday, September 05, 2006 1:40 PM
  Subject: Re: Re: [cpp] (no subject)


  Arcane,您好! 
        你的设计需要修改了.当然,如果真要写,绕几个圈也是可以做到的,例如 return 一个 void (*pfunc)() 的 func 出来
  通过他来对外取得 client 需要的接口, 还有其他猥琐的方法, 如 template 也可以办到.
       但是建议修改设计.

  ======== 12:30:40 您在来信中写道: ========

          你好,DarkSpy,
              由于ButtonCB是用户自定义的,我没有办法保证它的名字不改变,
          也就是说myDlg::ButtonCB中的myDlg和ButtonCB这两个名字我都不能保证不变,
          只能保证myDlg的基类不变,因此,不好确定btn.callback的参数类型。。

          谢谢了
          Arcane

            ----- Original Message ----- 
            From: DarkSpy 
            To: C++ Discuss Group 
            Sent: Tuesday, September 05, 2006 10:31 AM
            Subject: Re: [cpp] (no subject)


            Arcane,您好! 

              buttoncb 做基类虚函数.
                callback参数类型为基类虚函数.呼叫函数的时候 reinterpret_cast 过去
                其他顺水推舟.

            ======== 14:42:19 您在来信中写道: ========

                    大家好:
                        最近遇到一个问题,想请大家帮忙。

                    我想用一个类函数做为某个控件的回掉函数,如:

                    class button;

                    class DlgBase {};
                    class myDlg : public DlgBase {
                    public:
                      void ButtonCB();
                      button btn;
                    }

                    现在的问题是,我想用ButtonCB() 作为btn的回掉函数。就是btn.callback(myDlg::ButtonCB);

                    我想知道callback的参数类型应该是什么?
                    虽然,这个例子里面,可以用:
                    typedef void (myDlg::*CB)();
                    而callback的参数类型就是CB,
                    但是,问题是myDlg是用户定义的,button是我定义的,我不知道用户会定义出何种DlgBase的派生类,
                    那么,我的callback的参数类型应该怎么设置?

                    谢谢
                    Arcane
                       

                    +==================================================+
                      | Nanjing Rep. Office
                      | Engineering Technology Associates, Inc.
                      | Room 1401, Huihong Building, 87 Baixia Road,
                      | Nanjing, 210002, China
                      | Voice:  (025) 84692761  Ext: 8002 
                      | Fax:    (025) 84692762
                      | Email:  xjin at eta.com.cn  Web: http://www.eta.com
                    +==================================================+ 

            = = = = = = = = = = = = = = = = = = = = = = 

                    致
            礼!

                          DarkSpy
                                        coneos at 21cn.com
                             2006-09-05



--------------------------------------------------------------------


            _______________________________________________
            Cpp mailing list
            Cpp at codingnow.com
            http://codingnow.com/mailman/listinfo/cpp
       

  = = = = = = = = = = = = = = = = = = = = = = 

          致
  礼!

                DarkSpy
                              coneos at 21cn.com
                   2006-09-05



------------------------------------------------------------------------------


  _______________________________________________
  Cpp mailing list
  Cpp at codingnow.com
  http://codingnow.com/mailman/listinfo/cpp
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://codingnow.com/pipermail/cpp/attachments/20060905/039edcc1/attachment-0001.html


More information about the Cpp mailing list