對不起,由於我在C++方面缺乏經驗,因此我無法準確理解代碼中發生了什麼以及爲什麼無法初始化對象。無法初始化自定義類中的對象
我使用的是類我在GitHub上找到其中包含以下相關的代碼(我刪除代碼,我相當肯定是不相關的):
Bee.h:
class Bee {
public:
Bee(HardwareSerial *serial, uint32_t baud);
private:
// Prevent heap allocation
void * operator new (size_t);
void * operator new[] (size_t);
};
Bee.cpp
#include "Bee.h"
Bee::Bee(HardwareSerial *serial, uint32_t baud) {
// set some variables
}
所以在github的例子是一個Arduino和他們ü選擇行Bee XBee(&Serial1, 9600);
以在setup()和loop()函數上方的.ino文件中初始化名爲XBee的對象。
我在建立一個需要一個蜜蜂對象的類。所以,我想這一點:
ADXBee.h
#ifndef _ADXBee_h
#define _ADXBee_h
#include "Bee.h"
class ADXBee {
public:
ADXBee();
private:
Bee _bee;
};
ADXBee.cpp
#include "ADXBee.h"
ADXBee::ADXBee(){
// Initialize serial
Serial1.begin(9600);
// Initialize Bee
Bee _bee(&Serial1, 9600);
}
我已經嘗試了許多不同的方法來初始化這一點,可惜我只是不沒有背景可以用我可以谷歌的方式提出這個問題。當我嘗試運行此代碼,我得到這個錯誤:
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
如果您「缺乏C++經驗」,那麼學習C++的正確方法是閱讀一本書,而不是嘗試解譯「我在github上找到的類」。這不是你學習C++的方式。用一本好書閱讀和學習C++,直到你學會了足夠能夠自己理解別人的代碼。 –
我認識到這是真的,我在努力提高生產力的同時閱讀並行:/ – eeScott