【发布时间】:2013-02-15 00:26:25
【问题描述】:
这是上一个问题中的问题 #2:
根据 Steven 的回答,我确实需要保存指针的数组在其范围之外持续存在,这会导致一些奇怪的行为。
这是我目前拥有的“Board”类,它包含多个子元素:
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
Board.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);
这会导致写出一些疯狂的串行代码。
显然我不了解这里类中数组中指针的来龙去脉。
【问题讨论】:
-
在您的
loop函数中matrix是什么?? -
Marble是Actor的子类吗?是Marble::speakvirtual?是Actor::speakvirtual?如果这三个答案都是肯定的,那么您的代码应该可以工作。
标签: c++ inheritance arduino