作用域的问题求教

忠向 2005-07-25 09:03:52
我封装了一个类CCar,其中使用了许多的其他类,比如CDoor,CBase,我的问题是:我不想把后面的这些被使用的类暴露出来,只是提供一个简单的CCar,给使用者,是否可以做到?我该怎么做?
...全文
145 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
needways 2005-07-26
  • 打赏
  • 举报
回复
也可以做成如下的形式:

*** 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;
}
忠向 2005-07-26
  • 打赏
  • 举报
回复
to linestyle(linestyle) :
好点子,我正有此意,是否就是COM里面的“嵌套”“包容”之类的东东呢

to windcsn(向所有的朋友学习!) :
这个估计是我修改的方向:)毕竟我对COM不是很熟练,还只是停留在纸上谈兵的阶段

再次表示对回帖的三位朋友的感谢

linestyle 2005-07-26
  • 打赏
  • 举报
回复
作成COM的形式,微软的好多东西这样做的,好多东西也没有暴露给我们啊:)
windcsn 2005-07-26
  • 打赏
  • 举报
回复
你使用一个函数,用这个函数来生成CCar类,而且只生成CCar类,将这个函数作为DLL对外提供的接口就可以了
忠向 2005-07-26
  • 打赏
  • 举报
回复
谢谢两位指点

把CDoor,CBase等类(都是内嵌类)封装在DLL中,又有问题了,怎么让发布给其他使用者的CCar类中不出现CDoor,CBase等类的定义呀,比较难办
忠向 2005-07-26
  • 打赏
  • 举报
回复
我不想把Class CDoor,Class CBase暴露出来,所以...
windcsn 2005-07-26
  • 打赏
  • 举报
回复
看到这里我想到,其实更简单就是:
在头文件中先使用:
class CDoor;
class CBase;
来声民,然后在CCar中使用是没有问题的
在CPP文件中包含指定的头文件
忠向 2005-07-26
  • 打赏
  • 举报
回复
天涯浪子 的偷梁换柱手法果然高超!!!!!
兄弟佩服的五体投地了,多谢多谢!
这个问题给20分,确实少了点,不知道怎么分了:(
windcsn 2005-07-25
  • 打赏
  • 举报
回复
将这些类作成DLL,然后仅仅暴露CCar,也就是将CCar导出来
xlzxlich 2005-07-25
  • 打赏
  • 举报
回复
把许多的其他类,比如CDoor,CBase做成dll。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧