【问题标题】:Problem with creation of instances of classes inside another class在另一个类中创建类实例的问题
【发布时间】:2019-12-09 11:28:56
【问题描述】:

我正在尝试从一个类中创建一个类,但我现在对如何做到这一点感到非常困惑。我已经尝试了几个小时,但没有运气,而且我的 c++ 初学者水平也限制了我一点。

我一直在使用此链接作为参考,但没有成功:/:

Creating instance in an another class of an object

这是我的代码:

大类 Sensor.h:

#ifndef SENSOR_H
#define SENSOR_H
#include "Dummy_Sensor.h"
#include "Lovato_DMG610.h"

class Sensor{
  public:
    double last10Vals [10];
    char id[2];
    Lovato_DMG610 dataSource(2);
    Sensor(unsigned char dataSize){ 
      }

    int getSensorData ()
    {
      return 0;
    }
  private:
    unsigned char dataSize;
};

#endif

我的小班 Lovato_DMG610.h:

#ifndef _KERN_LOVATO_DMG610
#define _KERN_LOVATO_DMG610

#include <Arduino.h>

//using namespace std; 
class Lovato_DMG610{
  public:
    double variable = 0;

    Lovato_DMG610(uint8_t pinToConnect)
    {
      _pinToConnect=pinToConnect;
    }


  private:
    uint8_t _pinToConnect;
};

#endif

我收到与第一个文件相关的错误:

Sensor.h:10: error: 'Lovato_DMG610' does not name a type
     Lovato_DMG610 dataSource(2);

我的问题是:

  1. 如何包含 Lovato 类以避免此错误?
  2. 应该如何从 Sensor 类中设置 Lovato 参数? (这个问题与我也收到“Sensor.h:10: error: expected identifier before numeric constant Lovato_DMG610 数据源(2);")
  3. 我正在使用代码: using namespace std;在所有类声明之前,我知道这不是一个好习惯(https://www.quora.com/What-does-using-namespace-std-mean-in-C++)。不过,我想问你是否可以建议我是否应该在这些标题的范围内使用它。

主程序将保留一组传感器对象,我想在其中对不同的传感器进行查询。我的Header.h 中唯一包含的是 Sensors.h。

谢谢!

更新: 更正 vll 建议的初始化后,构造函数正常(问题 2 已解决)但 Sensor.h 中每次都会出现相同的“Lovato_DMG610”未命名类型错误.

【问题讨论】:

  • Sensor.h 中有一个流浪的#endif
  • 这可能会有所帮助:stackoverflow.com/questions/2133250/…
  • Lovato_DMG610 不需要公开吗?
  • 亲爱的 Eckhardt,谢谢你,我刚刚纠正了它。 Dabas:在 Sensor.h 中,我在创建实例之前包含了 Lovato 的声明,为什么它不能识别它? Pieter21,我应该在函数声明之前添加一个额外的公共声明吗?

标签: c++ class


【解决方案1】:

参数应该在构造函数中设置:

Lovato_DMG610 dataSource;
Sensor(unsigned char dataSize) : dataSource(2)
{}

【讨论】:

  • 您可以使用Lovato_DMG610 dataSource{2};。我什至会说这是一种默认初始化成员的方式。
  • 谢谢!!对于 Lovato_DMG610 类的声明,你们知道编译器不知道会发生什么吗?
猜你喜欢
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 2014-12-05
相关资源
最近更新 更多