You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中无法通过Getter读取类变量值?函数传参问题求助

问题原因与解决方案

核心问题是传值调用导致的对象副本修改:

  • 调用readSensorFunction(aqiSensor)时,C++会创建aqiSensor的局部副本传入函数,函数内的sen是这个副本而非原对象。
  • 函数里调用sen.setData(data)修改的是副本的data值,原对象aqiSensor的data始终是构造时初始化的0,所以main函数里的printf一直输出0。

两种修复方案

方案1:使用引用传递

将函数参数改为引用类型,让函数直接操作原对象:

void readSensorFunction(Sensor& sen) 
{
  int rawData;
  int data;
  ... // rawData 转 data 的逻辑

  sen.setData(data);
  printf("read data: %d", sen.getData());
}

方案2:使用指针传递

通过指针传递对象地址,间接操作原对象:

// 修改函数定义
void readSensorFunction(Sensor* sen) 
{
  int rawData;
  int data;
  ... // rawData 转 data 的逻辑

  sen->setData(data);
  printf("read data: %d", sen->getData());
}

// main 函数中的调用修改为
readSensorFunction(&aqiSensor);

额外编译问题修复

你的Sensor类中getData()函数末尾缺少分号,会导致编译报错,需要补上:

int getData() {
  return data; // 添加分号
}

内容的提问来源于stack exchange,提问作者NINJA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 05:42:22