2013-02-15 88 views
0

这是问题#2从这个前面的问题:的Arduino:指针子类继承和数组

Inheritance in Arduino Code

大厦关闭史蒂芬的回答,我确实需要保存的指针之外坚持的阵列其范围,这导致了一些奇怪的行为。

这是我的 “局” 级我到目前为止,包含多个子元素:

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); 

这导致一些坚果串行代码被写出。

很明显,我不了解指针在数组中的指针的来龙去脉。

+0

你的循环函数什么是矩阵? – 2013-02-15 00:29:15

+0

“大理石”是“演员”的一个子类吗?大理石::说'虚拟'吗? '演员::说'虚拟'吗?如果三个答案都是肯定的,你的代码应该可以工作。 – congusbongus 2013-02-15 00:31:40

回答

1

你需要虚拟Actor::speak,编译器使用虚拟方法的动态绑定。

class Actor 
{ 
    public: 
    Actor(); 
    virtual void speak(); // virtual 
    private: 
};