在另一个类中创建类实例的问题
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 文件中创建类实例