假设类A有若干可重载函数(OnDoSth()等),若干消息(MS_MESSAGE等)
一般情况,需要对类A的可重载函数和消息进行处理时,是定义一个类A1作为类A的子类,在类A1中进行处理,然后生成A1的实例。
我想请问:
假如类B的定义如下
class B
{
......
public:
    A *a1;
    A a2;
......
};
如何在类B中处理a1、a2的可重载函数和消息呢?
望不吝赐教,不胜感激!

解决方案 »

  1.   

    这个问题,我没太听明白,我个人的想法是,你在B中处理A的函数和消息与B没有关系,只要你在A中做了定义,在B中就可以用a1->something类似的东西调用,
      

  2.   

    按照你的定义,当使用a1->DoSth()时,并不会调用A1的成员函数。如果想要调用,可以定义A1 *a1
      

  3.   

    在A中是虚函数才能重载,在B中重载直接定义就行了或做你需要做的事都跟A中没关系,但是重要是调用的时候一定要注意调用的是A的还是B的就行了。
      

  4.   

    诸位可能没打明白我的意思,举个具体的例子吧
    比如CSocket类,有可重载函数OnReceive(),一般我们是通过继承CSocket来处理该可重载函数,我想知道,如果我直接载CDialog1里定义:
    ……
    public:
        CSocket mysock;
    ……
    有没有办法处理OnReceive(),让他完成我指定的任务。
      

  5.   

    a2这种形式好像不太好,因为你已经定义a2为A了,而不是指针,
    你的OnReceive(),不容易实现
    要用最好生成 A* pa2;
      

  6.   

    先建立CSocket的后代类,重载OnReceive();
    然后在对话框中定义该实例类成员。