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

来源:百度知道 编辑:UC知道 时间:2024/05/28 16:27:08
我现在碰到一个问题,大家看看怎么解决好:

首先,我这个程序不是窗口程序。是一个客户端去取服务器的数据,再把取到的数据给主程序。
现在有两个父类,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:
....
priv

我想你可以在两个父类中各自定义一个虚函数,父类在得到数据后调用它.在child中重新实现那两个需函数即可.

父类两个一模一样的函数的时候调用这个函数的时候用::比如
CFather1::OnRecevice或CFather2::OnRecevice。
假如你重载了这个函数,当你重载函数的时候和你重载哪一个已经没关系了,它只调用你重载的那个。
当你传递的参数符合重载后的OnRecevice,这时候编译没问题!

你要传递数据就把数据放到一个静态变量当中去 static!这时候这个变量在哪都能用!

我自己的建议,在用Socket网络传送的时候,最好用原始的api,不要用mfc里封装好的类,它本来就是帮你封装的很好用,但用的糊里糊涂的不知道原理了,你现在又封装的两层,这样一来必定会影响你的传送速度,所以你还是回到最原始的api函数上,等你做好的时候,你会感觉很清楚,而且你会发现,你的程序传送速度很快。

用谁的就在函数前加谁的类名,然后加四个点就可以了。子类里完全不用定义父类的变量了,因为子类继承父类特性,那些函数可以直接拿来用的。