我封装了一个类CCar,其中使用了许多的其他类,比如CDoor,CBase,我的问题是:我不想把后面的这些被使用的类暴露出来,只是提供一个简单的CCar,给使用者,是否可以做到?我该怎么做?

解决方案 »

  1.   

    把许多的其他类,比如CDoor,CBase做成dll。
      

  2.   

    将这些类作成DLL,然后仅仅暴露CCar,也就是将CCar导出来
      

  3.   

    谢谢两位指点把CDoor,CBase等类(都是内嵌类)封装在DLL中,又有问题了,怎么让发布给其他使用者的CCar类中不出现CDoor,CBase等类的定义呀,比较难办
      

  4.   

    你使用一个函数,用这个函数来生成CCar类,而且只生成CCar类,将这个函数作为DLL对外提供的接口就可以了
      

  5.   

    作成COM的形式,微软的好多东西这样做的,好多东西也没有暴露给我们啊:)
      

  6.   

    to linestyle(linestyle) :
    好点子,我正有此意,是否就是COM里面的“嵌套”“包容”之类的东东呢to windcsn(向所有的朋友学习!) :
    这个估计是我修改的方向:)毕竟我对COM不是很熟练,还只是停留在纸上谈兵的阶段再次表示对回帖的三位朋友的感谢
      

  7.   

    也可以做成如下的形式:*** car.h ***
    typedef class CDoor* DOOR;
    typedef class CBase* BASE;class CCar
    {
    public:
        ...
    private:
        DOOR m_pDoor;
        BASE m_pBase;
    };*** CAR.CPP ***
    class CDoor
    {
    public:
       ...
    };class CBase
    {
    public:
       ...
    };CCar::CCar()
    {
       m_pBase = new CBase;
       m_pDoor = new CDoor;
       ...
    }CCar::~CCar()
    {
       delete m_pBase;
       delete m_pDoor;
    }
      

  8.   

    看到这里我想到,其实更简单就是:
    在头文件中先使用:
    class CDoor;
    class CBase;
    来声民,然后在CCar中使用是没有问题的
    在CPP文件中包含指定的头文件
      

  9.   

    我不想把Class CDoor,Class CBase暴露出来,所以...