在另一个类中创建类实例的问题

Posted

技术标签:

【中文标题】在另一个类中创建类实例的问题【英文标题】: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);

我的问题是:

    如何包含 Lovato 类以避免此错误? 应该如何从 Sensor 类中设置 Lovato 参数? (这个问题与我也收到“Sensor.h:10: error: expected identifier before numeric constant Lovato_DMG610 数据源(2);") 我正在使用代码: 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 这可能会有所帮助:***.com/questions/2133250/… Lovato_DMG610 不需要公开吗? 亲爱的 Eckhardt,谢谢你,我刚刚纠正了它。 Dabas:在 Sensor.h 中,我在创建实例之前包含了 Lovato 的声明,为什么它不能识别它? Pieter21,我应该在函数声明之前添加一个额外的公共声明吗? 【参考方案1】:

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

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

【讨论】:

您可以使用Lovato_DMG610 dataSource2;。我什至会说这是一种默认初始化成员的方式。 谢谢!!对于 Lovato_DMG610 类的声明,你们知道编译器不知道会发生什么吗?

以上是关于在另一个类中创建类实例的问题的主要内容,如果未能解决你的问题,请参考以下文章

setContextProperty() 不会在 qml 文件中创建类实例

C++ 难以在单例类中创建类的实例

在 nib 文件中创建类的实例

python进阶三(面向对象编程基础)3-1 python中创建类属型

c++ - 在函数中创建类实例并稍后使用

访问Class中的常量而不在ObjectiveC中创建类的实例[重复]