2016-11-17 6 views
-1

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の彼らuのためのものです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; 
}; 

私はこれを初期化するために、いくつかの異なる方法を試した

#include "ADXBee.h" 

ADXBee::ADXBee(){ 
    // Initialize serial 
    Serial1.begin(9600); 

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

ADXBee.cppと、残念ながら私はちょうどドン私はそれをGoogleにできる方法でこの質問をする背景がありません。

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 
+0

"C++での経験が不足"の場合、C++を学ぶ適切な方法は、 "githubで見つかったクラス"を解読するのではなく、本を読むことです。それはあなたがC++を学ぶ方法ではありません。良い本を読んでC++を読んで、他人のコードを理解できるようになるまで、あなた自身ですべてを読んでください。 –

+0

私はそれが本当であることを認識しており、同時に生産性を目指して読んでいます:/ – eeScott

答えて

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

同じ名前のメンバーを初期化しません:私はこのコードを実行しようとすると、私はこのエラーを取得します。関数ローカルオブジェクトを作成するだけです。関数の本体が始まる前にイニシャライザーリストを使用して初期化する必要があります。

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

私は<something>はそれがHardwareSerial *serialに良い値であるものあなたのポストからはっきりしていないので、する必要があるかわかりません。

+0

これはうまくいきました、ありがとう!ここで何が起こっているのかをもっとよく理解しようと、読書をしていきます。 – eeScott

+0

@eeScott、あなたは大歓迎です。ハッピープログラミング! –

関連する問題