首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求设计思路,关于父对象和字对象通讯,该如何解决

2012-03-01 
求设计思路,关于父对象和字对象通讯Class CChild{}Class CParent{CChild child}child对象要callCParent

求设计思路,关于父对象和字对象通讯
Class CChild
{
};

Class CParent
{
 CChild child;
};

child对象要callCParent的成员函数,怎么设计最佳?

我现在的方法是CParent暴露一个IParent接口,要call的函数被定义在此接口内。
CParent的实例指针被传入CChild对象。

[解决办法]
不知道你具体要做什么,像你上面的要求,直至用指针就可以了

C/C++ code
class parent;class child{public :    child();    virtual ~child();private :    parent* m_pParent;};
[解决办法]
楼主的想法可能是parent只暴露部分方法给child
这样的话,楼主目前的做法没问题啊。
[解决办法]
声明为句柄类咯,不是太明白你具体的意思。
[解决办法]
首先,你这个不叫父子类,父子类指的是基类与派生类的关系,子类从父类派生的话,是可以调用父类的非私有成员函数的,不存在你的问题。

对于你的问题解决方法:

Child 类里面声明一个域 CParent* 类型的成员,在 Child 的构造函数中将 CParent 的指针做为参数传进来赋给Child的该成员便可。该法相当于从外部调用CParent类所有可供外部调用的方法。

不建议使用接口,因为这不是接口的定义,你等于做了一个adapter,但是这个没有必要。
[解决办法]
用tr1的function和bind,就可以实现绑定。
可以实现松藕合!
比如:
C/C++ code
SysTray::NotifyFunc func = std::tr1::bind(&Frame::onMainTrayNotify, this, std::tr1::placeholders::_1);    _tray.registerNotify(func);    // TODO (qpsoft#1#): 此处32512需要修改成IDI_MAIN    _tray.init(_inst, _wnd, 32512);    _tray.add();    func = std::tr1::bind(&Frame::onInfoTrayNotify, this, std::tr1::placeholders::_1);    _tipFrame.registerNotify(func);    if (_tipFrame.registerWindow(L"Info Frame - QPSOFT.COM"))    {        _tipFrame.create(NULL, L"Info Frame", L"Info Frame - QPSOFT.COM", WS_POPUP, WS_EX_TRANSPARENT);        _tipFrame.showWindow(SW_MINIMIZE);        _tipFrame.showWindow(SW_HIDE);    }
[解决办法]
暴露出接口这个方法相当好;貌似楼主还没有那样做;修改一下,拿出来我们再参谋一下;
[解决办法]
不过你不能让他们有继承关系;你这一子,一父类是怎么回事;子类可以直接调用父类的方法;
[解决办法]
都是高手!
[解决办法]
学习~

热点排行
Bad Request.