在C ++中运行时从指针访问对象实例

时间:2019-04-29 17:37:35

标签: c++

我正在实现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当作对象而不是指针,使其像以前一样工作?

1 个答案:

答案 0 :(得分:2)

现在con是一个指针,但是operator<<()要求引用,并且可能定义为: connectionCB &operator<<(connectionCB &cb, const char *str);

使用: *con << "Hello World";