【问题标题】:How to return custom class object from a function in cpp?如何从cpp中的函数返回自定义类对象?
【发布时间】:2020-09-10 13:52:25
【问题描述】:

我是 cpp 的新手,到目前为止我一直在学习返回 int 或 double 我们会有类似的签名

double functionName(){
return something_double;
}

但现在我处于一种新情况,我想初始化一个传感器并使用静态方法返回由它创建的对象。

read_sensor_data.cpp

#include <Adafruit_ADS1015.h>
#include "read_sensor_data.h"
Adafruit_ADS1115 ads;


namespace SensorData 
{
  static Adafruit_ADS1115 read_sensor_data::initializeADC() {
    ads.setGain(GAIN_TWOTHIRDS);
    ads.begin();
    return ads;
  }

}

和头文件:

// read_sensor_data.h
#ifndef READ_SENSOR_DATA_H
#define READ_SENSOR_DATA_H
#include <Adafruit_ADS1015.h>

namespace SensorData
{
  class read_sensor_data
  {
    public:
      static Adafruit_ADS1115 initializeADC();
  };
}

#endif

如何从InitiazlieADC 成员函数返回自定义对象广告?

【问题讨论】:

  • 你显示的代码有什么问题?
  • @UnholySheep 鉴于显示的其他语义,按值返回是可疑的

标签: c++ class oop member


【解决方案1】:

猜测这个意图,你希望函数做两件事:

  • “初始化”在名称空间范围内的源文件中本地声明的对象
  • 返回对它的引用,以便在其他翻译单元中使用它

没问题!

只是通过引用返回:

  static Adafruit_ADS1115& initializeADC();
  //                     ^

【讨论】:

  • 啊,所以我可以访问obj = initializeADC() ?
  • @Ciastopiekarz 是,如果 obj 也是参考。这是你想要的吗?
  • 我想要价值,即对象本身。 Adafruit_ADS1115 对象 ads 具有类似 readADC_SingleEnded 的功能,它采用 int 并从连接到 Adafruit_ADS1115 多路复用器的传感器返回数据。撒谎ads.readADC_SingleEnded(1);
  • @Ciastopiekarz 是的,所以你想要一个对现有 Adafruit_ADS1115 对象的引用。一系列参考资料将为您提供。目前,您的 initialiaseADC 函数会返回它的副本。
  • 链接引用是什么意思?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 2015-03-26
  • 1970-01-01
  • 2018-06-06
  • 2011-01-03
  • 1970-01-01
相关资源
最近更新 更多