我正在实现xbeep库。我发现此代码段将在主循环中工作:
libxbee::XBee xbee("xbee3", "/dev/ttyUSB0", 9600);
myCB con(xbee, "Data", &address);
con << "Hello World";
但是,由于我将在运行时创建连接,因此我修改了上面的代码,以便在调用用于创建连接的方法时创建对象。我不是对象,而是将它们声明为指针:
libxbee::XBee* xbee;
connectionCB* con;
然后在打开连接时,我实例化了它们:
void XbeeController::XbeeController::openXbeeConnection(QString port, int bRate, QString deviceAddr)
{
baudRate = bRate;
xbee = new libxbee::XBee(DEVICE_REV, "/dev/ttyUSB0", 9600); //Burnt values for proof of concept.
con = new connectionCB(*xbee, "Data", &address);
}
我的代码现在失败
void XbeeController::XbeeController::sendXbeeMessage(std::string message)
{
con << message;
}
错误:类型为“ xbee :: connectionCB *”和“ char *”的无效操作数对二进制“ operator <<” con <<“ Hello World”; ~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如何将con
当作对象而不是指针,使其像以前一样工作?
答案 0 :(得分:2)
现在con
是一个指针,但是operator<<()
要求引用,并且可能定义为:
connectionCB &operator<<(connectionCB &cb, const char *str);
使用:
*con << "Hello World";