- 论坛徽章:
- 0
|
- class B : public C
- {
- public:
- CTest a;
- }
-
- B::B(): a(this)
- {
- }
-
- class A: public B{
-
- }
-
- A::A() : B(){
- a->fun();
- }
-
- class F:public B{
- }
-
- F::F() : B()
- {
- a->fun(); //这里这个a和上面那个a地址不一样,有没有办法让地址一样呢?
- }
复制代码 例如有一个窗口A,上面有一个按钮(ConnectSVRBtn),单击一下这个按钮,可以与远程TCP服务器建立起socket连接,然后在这个窗口A上,还有另外一个按钮(OpenWndBtn),单击一下这个按钮,会弹出一个新窗口B,在这个新窗口上,有一个按钮(SendTxt),这个按钮是想向服务器发送一段字符串,因为之前已经用窗口A按下ConnectSVRBtn已经与服务器建立socket连接了,那么理论上按下B窗口上的SendTxt,是不需要再次建立socket连接了吧,因为A窗口上已经建立过了嘛。但是窗口B上,SendTxt触发的时候,却提示socket连接未建立
Jason(317471417) 12:51:06
而连接和发送都是调用上面那段代码中的CTest a这个方法来操作的
例如,ConnectSVRBtn函数内部其实是a->connectSVR(ip,port); 而SendTxt函数内部调用的是 a->send(CONNID, buf,len);
他们的问题就是出在,a->connectSVR(ip,port)建立成功后,这里a的地址和a->(connid,buf,len);的a的地址不一样
所以a->send(connid,buf,len);才会提示发送失败,因为未建立socket的错误 |
|