【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
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连接未建立
而连接和发送都是调用上面那段代码中的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的错误
而连接和发送都是调用上面那段代码中的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的错误
请问该怎么解决啊?望C++大神出来解答一下。
肯定不一样啊。两个不同对象的地址怎么可能一样呢。可以把a设置成静态变量,那样就能保证地址一样了。