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
相关产品推荐
相关产品推荐

