我有这样一个需求,描述如下:class CTest1:public ISapServer
{
public:
CTest1(void);
~CTest1(void);
private:
IPacketParser * m_pSapServerMgr;
};
class CTest2
{
public:
CTest2(void);
~CTest2(void);
public:
virtual void setPacketParser( int nId, IPacketParser * packetParser );/*保存用户传过来的对象*/
{
             //(CTest1中的m_pSapServerMgr = packetParser ,或者是CTest12中的m_pSapServerMgr =packetParser , 但要保证CTest1中的对象能取   到这个m_pSapServerMgr)
}
//private:
// IPacketParser * m_pSapServerMgr;
};
这是一个头文件中的两个类, 我的需求是这样的。   一个用户(可能有多个用户)   需要调用setPacketParser,把它的对象传给我。我需要保存这个 IPacketParser * 对象, 也就是m_pSapServerMgr 。 在 CTest1 类中使用。。怎么样来设计 程序才能达到目的呢。 

解决方案 »

  1.   

    class CTest1:public ISapServer
    {public:
        CTest1(void);
        ~CTest1(void);
        void setPacketParser(IPacketParser* packetParser ){
            m_pSapServerMgr = packetParser;
        }
    private:
        IPacketParser* m_pSapServerMgr;
    };
    class CTest2
    {public:
        CTest2(void);
        ~CTest2(void);
    public:
    virtual void setPacketParser(int nId, IPacketParser* packetParser );/*保存用户传过来的对象*/
         {
          IPacketParser* p = m_array[nId];           
        p->setPacketParser(packetParser);
            }//
    private:
          CArray<ISapServer*> m_array;
    };
    大概就这个个意思,给你参考一下
      

  2.   

    更正一下。 那个 nId好像 用不上了。 我之前觉得需要 一个nId来区分是不同的用户。 后来我觉得不对。
    不同的用户我都会 new 一个我自己的对象给它。所以就不用区分 了  楼上的方法我没看明白。。
      ps: 我是在linux上用。 不能用MFC类
      

  3.   

    你可以在CTest2中声明一个CTest1的成员变量,在setPacketParser中使用CTest1的相应接口