これは、この前の質問の問題 #2 です。
スティーブンの答えに基づいて構築すると、ポインターを保持する配列がスコープ外に永続化する必要があり、奇妙な動作が発生します。
これは、これまでに持っている「Board」クラスで、複数の子要素が含まれています。
ボード.h:
#ifndef Board_h
#define Board_h
#include <StandardCplusplus.h>
#include <serstream>
#include <string>
#include <vector>
#include <iterator>
#include "Arduino.h"
#include "Marble.h"
#include "Wall.h"
class Board
{
public:
Board();
void draw(double* matrix);
private:
Marble marble;
//std::vector<Actor> children;
Actor* children[2];
};
#endif
ボード.cpp:
#include "Arduino.h"
#include "Board.h"
#include <math.h>
#include <iterator>
#include <vector>
Board::Board()
{
}
void Board::create(double* _matrix, int _cols, int _rows) {
Marble *marble = new Marble();
Wall wall;
children[0] = marble;
//children.push_back(marble);
//children.push_back(wall);
}
void Board::draw(double* matrix) {
Serial.println("board draw");
children[0]->speak();
}
「ループ」関数で呼び出しています
board.draw(matrix);
その結果、いくつかのナッツシリアルコードが書き出されます。
明らかに、ここのクラスの配列内のポインターのインとアウトを理解していません。