У меня есть список структур, который хранится в классе как указатель на первый элемент списка:
Структураstruct SensorValue {
String name;
double value;
bool constantly;
SensorValue *next;
};
Записывается он корректно, вызовом метода sendValue вот так:
Запись в списокvoid Cloud::sendValue(String name, double value, bool constantly) {
SensorValue newSensorValue;
newSensorValue.name = name;
newSensorValue.value = value;
newSensorValue.constantly = constantly;
newSensorValue.next = NULL;
addSensorValue(&newSensorValue);
}
void Cloud::addSensorValue(SensorValue* value) {
if (sensorsList == NULL) {
sensorsList = value;
return;
}
SensorValue* iter = sensorsList;
while (iter->next != NULL)
iter = iter->next;
(iter->next) = value;
}
Но при обращении к первому элементу из другого метода, значение поля name берется как будто из воздуха:
Обращение к спискуString requestBody = "{\"login\":\"" + login + "\",";
requestBody += "\'password\':\"" + password + "\",";
requestBody += "\"deviceName\":\"" + device + "\",";
requestBody += "\"deviceType\":\"Arduino\",\"sensorsValue\":{";
SensorValue* iter = sensorsList;
Serial.println(sensorsList->name);
Serial.println(sensorsList->value);
Serial.println(sensorsList->next == NULL);
В этом примере значение sensorsList->name выводит значение "\"deviceName\":\"" + device + "\","; которое конкатенировалось выше. А следующие 2 значения выводятся корректно. Получается проблема именно со строкой
Почему так происходит и как это исправить?