VC++类之间的数据传递问题(高分求解!)

我现在碰到一个问题,大家看看怎么解决好:首先,我这个程序不是窗口程序。是一个客户端去取服务器的数据,再把取到的数据给主程序。现在有两个父类,CFather1,CFathe... 我现在碰到一个问题,大家看看怎么解决好:

首先,我这个程序不是窗口程序。是一个客户端去取服务器的数据,再把取到的数据给主程序。
现在有两个父类,CFather1, CFather2.
这两个类都继承了CAsyncSocket
分别在CFather1和CFather2里重载CAsyncSocket::OnConnect和CAsyncSocket::OnRecevie函数
class CFather1: public CAsyncSocket
{
public:
virtual void OnConnect( int nErrorCode );
virtual void OnReceive( int nErrorCode );
}
class CFather2: public CAsyncSocket
{
public:
virtual void OnConnect( int nErrorCode );
virtual void OnReceive( int nErrorCode );
}
CFather1要connect到port1端口拿数据,CFather1要connect到port2端口拿数据,IP一样的。
现在有一个子类CChild同时继承CFather1和CFather2。

因为我要在CChild里把从CFather1和CFather2拿到的数据统一做处理后再传给主程序。

我的目的是要在CChild类中获得CFather1和CFather2接收到的数据,用什么方法比较好呢?
能不能直接在CChild类中接收数据呢?如果分别在在CFather1和CFather2里接收数据我怎么在CChild里得到数据做统一处理?

现在的问题是如果我在CChild里:
class CChild: public CFather1, public CFather2
{
public:
....
private:
CFather1 father1;
CFather2 father2;
}

这样实例化的话,
father1.create() //建立socket
father1.connect(ip,port);
father1.send(data);
然后会在father1的OnRecevice里得到数据,因为不是窗口程序,数据没什么好办法通知给CChild
如果在CChild里重载OnRecevice的话,我怎么知道是重载了哪个父类的方法,两个名字、参数都一样的,而且我是不是要connect两次??

非常晕,新手基础不好,望大家详细指教!一定要详细啊,我解决了这个问题就再给追加50分!
展开
 我来答
十指跳舞的男人
2009-03-06 · TA获得超过250个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:0
展开全部
父类两个一模一样的函数的时候调用这个函数的时候用::比如
CFather1::OnRecevice或CFather2::OnRecevice。
假如你重载了这个函数,当你重载函数的时候和你重载哪一个已经没关系了,它只调用你重载的那个。
当你传递的参数符合重载后的OnRecevice,这时候编译没问题!

你要传递数据就把数据放到一个静态变量当中去 static!这时候这个变量在哪都能用!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
源知
2009-03-06 · TA获得超过104个赞
知道小有建树答主
回答量:79
采纳率:0%
帮助的人:0
展开全部
我自己的建议,在用Socket网络传送的时候,最好用原始的api,不要用mfc里封装好的类,它本来就是帮你封装的很好用,但用的糊里糊涂的不知道原理了,你现在又封装的两层,这样一来必定会影响你的传送速度,所以你还是回到最原始的api函数上,等你做好的时候,你会感觉很清楚,而且你会发现,你的程序传送速度很快。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lixin_shirt
2009-03-06 · TA获得超过285个赞
知道小有建树答主
回答量:444
采纳率:0%
帮助的人:389万
展开全部
用谁的就在函数前加谁的类名,然后加四个点就可以了。子类里完全不用定义父类的变量了,因为子类继承父类特性,那些函数可以直接拿来用的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gis19831203
2009-03-06 · TA获得超过690个赞
知道小有建树答主
回答量:914
采纳率:0%
帮助的人:838万
展开全部
我想你可以在两个父类中各自定义一个虚函数,父类在得到数据后调用它.在child中重新实现那两个需函数即可.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式