私はいくつかのArduinoコードを書いていて、いくつかのクラスで継承を使用しようとしています。クラス「Actor」(私の基本クラス)とクラス「Marble」(Actorから継承)があります。ヘッダーファイルは次のとおりです。
Actor.h:
#ifndef Actor_h
#define Actor_h
#include "Arduino.h"
class Actor
{
public:
Actor();
void speak();
private:
};
#endif
Marble.h:
#ifndef Marble_h
#define Marble_h
#include "Arduino.h"
#include "Actor.h"
class Marble : public Actor {
public:
Marble();
virtual void speak();
private:
};
#endif
Actor.cpp:
#include "Arduino.h"
#include "Actor.h"
Actor::Actor()
{
}
void Actor::speak() {
Serial.println("Actor");
}
Marble.cpp:
#include "Arduino.h"
#include "Marble.h"
void Marble::speak() {
Serial.println("Marble");
}
そして最後に、ループ関数で次のことを行います。
void loop() {
Marble marble;
Actor children[2];
children[0] = marble;
children[0].speak();
その結果、「Actor」が印刷されます。
私の問題に似ているように見えるこの素敵なリンクを発見しましたが、解決策は私にはうまくいかないようです: http ://arduino.cc/forum/index.php?topic=41884.0
それで。「アクター」の配列を作成し、そこにマーブルを貼り付けようとすると、アクターなどにキャストされるようです。問題は、すべて「Actor」から継承するいくつかの異なるキャラクターがあり、それらの配列を繰り返し処理して、オーバーライドされたメソッドを呼び出すことです。
それで、おそらく問題は私がこの問題にどのように取り組んでいるのか、あるいはいくつかの構文エラーがあるのでしょうか?知らない!
助けてくれてありがとう、ケビン