gpt4 book ai didi

c - 在C中动态创建一个对象(使用radiohead库)

转载 作者:行者123 更新时间:2023-11-30 15:29:38 30 4
gpt4 key购买 nike

我正在尝试使用 NRF24l01+ 在我的 arduino 上实现动态地址分配,但在我的设备收到分配的地址后,我无法获得全局初始化的 RHReliableDatagram

这就是我所拥有的(由于某种原因不起作用:

manager = new RHReliableDatagram(driver, ID);

错误:

sketch_oct02b.ino: In function 'void setup()':
sketch_oct02b:47: error: no match for 'operator=' in 'manager = (((RHReliableDatagram*)operator new(267u)), (<anonymous>->RHReliableDatagram::RHReliableDatagram(((RHGenericDriver&)(& driver.RH_NRF24::<anonymous>.RHNRFSPIDriver::<anonymous>)), ((uint8_t)ID)), <anonymous>))'
C:\Users\****\Documents\HAS\HAS-mc\libraries\RadioHead/RHReliableDatagram.h:66: note: candidates are: RHReliableDatagram& RHReliableDatagram::operator=(const RHReliableDatagram&)

这是有效的代码,但我无法在运行时更改地址。

RHReliableDatagram manager(driver, DHT1_ADDRESS);

这里是我的问题的最小再现:

#include <RHReliableDatagram.h>
#include <RH_NRF24.h>
#include <SPI.h>
#include <DHT.h>

RH_NRF24 driver(8,10);

int ID = 255; //init ID, will be reassigned by server
RHReliableDatagram manager(driver,ID);//255 is the ID before init


void setup()
{
ID = 15;
manager = new RHReliableDatagram(driver, ID);//NOTE added this
//spi.setPins(13, 4, 3); //miso mosi sck
if (!manager.init()){
Serial.println("NRF failed to initialise");
digitalWrite(PIN_NRF_ERROR,HIGH);
} else {
Serial.println("NRF succesfully initialized");
}
}

void loop()
{

}

radio 头库的文档在这里: http://www.airspayce.com/mikem/arduino/RadioHead/classRHReliableDatagram.html

最佳答案

需要将动态分配的对象赋值给该对象类型的指针,如

type *p_var = new type(initializer)

在您的代码中应将其删除

RHReliableDatagram manager(driver,ID);//255 is the ID before init

并改变

manager = new RHReliableDatagram(driver, ID);//NOTE added this

RHReliableDatagram *manager = new RHReliableDatagram(driver, ID);//NOTE added this

此外,您还需要记住在不再需要管理器时使用delete()来释放管理器的内存。

关于c - 在C中动态创建一个对象(使用radiohead库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26156076/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com