C++ 外部函数通过指针修改类成员的值
生活随笔
收集整理的這篇文章主要介紹了
C++ 外部函数通过指针修改类成员的值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.問題出現
我把我的C代碼轉寫成C++。我的代碼中為新建了位置數據的一個類,我本來是通過C代碼解析一個GPS字符串然后為其賦值的。代碼片段如下
//提取NMEA-0183信息 //gpsx:nmea信息結構體 //buf:接收到的GPS數據緩沖區首地址 void GPS_Analysis(nmea_msg *gpsx,uint8_t *buf) {if((strstr((const char *)buf,"$GPRMC")))NMEA_GPRMC_Analysis(gpsx,buf); //GPRMC解析 }本來傳入的是一個全局的結構體變量,這個代碼沒有問題。
但是現在我傳入的這樣一個變量: 類中一個結構體指針傳入這個函數。
class PACK {public:nmea_msg msg; };PACK pack;GPS_Analysis(&pack.msg,Temp_buf);但是我發現了一個問題,我解析到了數據,但是這個c函數里面不能通過指針給我的結構體賦值,這就非常蛋疼了。
?
2.問題解決
我嘗試吧gps.c中的轉成gps.cpp,然后把這個參數改成了引用傳遞的方式。
void GPS_Analysis(nmea_msg & gpsx,uint8_t *buf) {NMEA_GPRMC_Analysis(&gpsx,buf); //GPRMC解析 }但是!我tm發現每次成功賦值了一次,第二次就會報segmentation fault。這個讓我更加蛋疼了。
?最后我發現了,這個是因為傳入的值,有時候strstr找不到那個參數的位置,返回值null,但是又對null進行了操作,才會出現這個情況。
轉載于:https://www.cnblogs.com/ZQQH/p/8947317.html
總結
以上是生活随笔為你收集整理的C++ 外部函数通过指针修改类成员的值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 找回密码
- 下一篇: s3c2440移植MQTT