对于我缺乏C ++经验,我很难理解我的代码中究竟发生了什么,以及为什么我无法初始化对象。
我正在使用我在github上找到的一个类,其中包含以下相关代码(我删除了我相当确定无关的代码)。:
Bee.h:
#include "Bee.h"
Bee::Bee(HardwareSerial *serial, uint32_t baud) {
// set some variables
}
Bee.cpp
Bee XBee(&Serial1, 9600);
因此,github上的示例是针对Arduino的,他们使用行#ifndef _ADXBee_h
#define _ADXBee_h
#include "Bee.h"
class ADXBee {
public:
ADXBee();
private:
Bee _bee;
};
来初始化setup()和loop()函数上方的.ino文件中名为XBee的对象。
我正在构建一个需要蜜蜂对象的类。所以我尝试了这个:
ADXBee.h
#include "ADXBee.h"
ADXBee::ADXBee(){
// Initialize serial
Serial1.begin(9600);
// Initialize Bee
Bee _bee(&Serial1, 9600);
}
ADXBee.cpp
ADXBee.h:66:30: warning: non-static data member initializers only available with -std=c++1
1 or -std=gnu++11 [enabled by default]
ADXBee.cpp:In constructor 'ADXBee::ADXBee()'
ADXBee.cpp:16:16: error: no matching function for call to 'Bee::Bee()'
ADXBee*:ADXBee(){
ADXBee.cpp:candidates are
Bee.h:Bee(SoftwareSerial*, uint32_t)
Bee.h:candidate expects 2 arguments, 0 provided
Bee.h:Bee(HardwareSerial*, uint32_t)
Bee.h:candidate expects 2 arguments, 0 provided
Bee.h:Bee(const Bee&)
Bee.h:candidate expects 1 argument, 0 provided
Error compiling
我已经尝试了很多不同的方法来初始化这个,但遗憾的是我没有背景以我可以谷歌的方式提出这个问题。当我尝试运行此代码时,我收到此错误:
for (Sensor sensor : mSensorManager.getSensorList(Sensor.TYPE_ALL)) {
Log.e("HB Service", sensor.getName() + ": " + sensor.getType());
}
答案 0 :(得分:0)
// Initialize Bee
Bee _bee(&Serial1, 9600);
这不会初始化同名的成员。它只是创建一个函数本地对象。您需要在函数体开始之前使用初始化列表对其进行初始化。
ADXBee::ADXBee() : _bee(<something>, 9600) { ... }
我不确定<something>
需要什么,因为您的帖子中不清楚HardwareSerial *serial
的价值是多少。