“Stealth”类用于在C ++中包含变量

时间:2013-03-25 18:25:10

标签: c++ class arduino wrapper

我目前正在使用两个相同的库来解析在Arduino中收到的命令(通过TCP/IP和串行)。所有不同之处在于传递给解析器的对象类型。

//main.cpp
SerCmd sCmd;
EthCmd eCmd;
void setup() {
    sCmd.listen("#",dumpCmd);
    eCmd.listen("#",dumpCmd);
}

void loop() {
    HardwareSerial SerClient = Serial.available();
    EthernetClient EthClient = Server.available();
    eCmd.read(SerClient);
    sCmd.read(EthClient);
}


//SerCmd.h
class SerCmd {
    public:
        void read(HardwareSerial &dataObj);
}

//EthCmd.h
class EthCmd {
    public:
        void read(EthernetClient &dataObj);
}

很明显:

  • 这两个对象几乎完全相同,它们共享许多常用方法(sCmd,eCd)。
  • 这两个类(SerCmd,EthCmd)可以替换为单个类,以减少sketch大小。

如何创建一个可以传递给read()方法的“隐形”类,同时仍然可以解决下面两个不同对象中的任何一个?

在这种情况下使用的常见做法是什么?

到目前为止,我能够编译以下代码,但无法初始化任何方法:

class Communication {};
HardwareSerial *SerClient;
Communication *Comm;

void setup() {
    Comm = (Communication*) SerClient;
    //Comm.begin(9600);
    //Error: request for member 'print' in 'Comm',
    //which is of non-class type 'Communication*'
}

0 个答案:

没有答案