无法从自定义类初始化对象

时间:2016-11-17 02:50:45

标签: c++

对于我缺乏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());
    }

1 个答案:

答案 0 :(得分:0)

// Initialize Bee
Bee _bee(&Serial1, 9600);

这不会初始化同名的成员。它只是创建一个函数本地对象。您需要在函数体开始之前使用初始化列表对其进行初始化。

ADXBee::ADXBee() : _bee(<something>, 9600) { ... }

我不确定<something>需要什么,因为您的帖子中不清楚HardwareSerial *serial的价值是多少。