wangyang881021 2023-04-20 16:18 采纳率: 100%
浏览 17
已结题

公共类赋值失败,请讲解一下

为什么我的公共类赋值失败?

void DTSConcent::ReadMessage()
{
    QByteArray buf = m_tcpClient->readAll();//读取数据
    if (buf.size() >14)
    {
       QString s=buf.toHex();

       QByteArray hexData = buf.toHex();
       char *p = hexData.data();
       if (s[0] == 'c'&&s[1] == 'c'&&s[2] == 'a'&&s[3] == 'a')
       {
           bool ok;
           int chNo = s.mid(16, 2).toInt(&ok, 16);
           QList<FiberLine> *linss =  PubFiberInfo->lines;
           *line = linss ->at(0);
           uint16_t dd = line->segmentlen;
           QString slen = s.mid(4, 8);
           int dataLen = slen.toInt(&ok, 16);
           //前190米为测试数据,不进行计入,0.4米一个点
           uint16_t reallen = dataLen<190/0.4 + 8?0:dataLen-(190/0.4 + 8);
           line->reallen = reallen;
           qDebug()<<line->reallen;
        //   line->GetFiberLineMax()
           //int len = QString::mid(int position, int n = -1) const
           //MainProcess::tfiber->Init();

       }

    }
}

img

当再次循环到该方法时,公共变量PubFiberInfo的reallen还是初始化的值。

  • 写回答

2条回答 默认 最新

  • mideum 2023-04-20 16:35
    关注
    *line = linss ->at(0);
    

    这行是给line所指向的对象赋值,不是改变line的指向,所以如果line本来不是指向PubFiberInfo下面的话,我没看出你有哪里修改了PubFiberInfo的值
    如果你想让line指向PubFiberInfo->lines的第一个元素,那么应该用

    line = &(*linss)[0];
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月28日
  • 已采纳回答 4月20日
  • 修改了问题 4月20日
  • 创建了问题 4月20日

悬赏问题

  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?