JSON — C ++ полиморфная функция печати не разрешается должным образом

Я создал класс, который абстрагирует библиотеку флэш-чипов SPI под названием SerialFlash, создав абстрактный класс Print.h. Когда я пытаюсь распечатать его с помощью библиотеки ArduinoJson, я получаю сообщение об ошибке:

src/FlashMemory.cpp:99:36: error: no matching function for call to 'ArduinoJson::JsonObject::printTo(<unresolved overloaded function type>)'
root.printTo(serialFlashPrint);
^

lib/ArduinoJson/include/ArduinoJson/Internals/../Internals/JsonPrintable.hpp:34:10: note: size_t ArduinoJson::Internals::JsonPrintable<T>::printTo(Print&) const [with T = Ardu
inoJson::JsonObject; size_t = unsigned int]
size_t printTo(Print &print) const {
^
lib/ArduinoJson/include/ArduinoJson/Internals/../Internals/JsonPrintable.hpp:34:10: note:   no known conversion for argument 1 from '<unresolved overloaded function type>' to
'Print&'

Файл, указанный в приведенной выше ошибке, находится здесь: https://github.com/bblanchon/ArduinoJson/blob/master/include/ArduinoJson/Internals/JsonPrintable.hpp

Это заголовочный файл для класса:

#include <Arduino.h>
#include <SerialFlash.h>
#include "Print.h"
#ifndef _SerialFlashPrint_h_
#define _SerialFlashPrint_h_

class SerialFlashPrint : public Print {
public:
SerialFlashPrint(SerialFlashFile *file);

virtual size_t write(uint8_t);
virtual size_t write(const uint8_t *buffer, size_t size);

private:
char buf[1];
uint16_t _current_byte;
SerialFlashFile * _file;
};

#endif

И файл cpp:

#include "serialFlashPrint.h"
SerialFlashPrint::SerialFlashPrint(SerialFlashFile * file) : Print() {
this->_file = file;
this->_current_byte = 0;
}

size_t SerialFlashPrint::write(uint8_t c) {
if(_current_byte == 0){
_file->erase();
_file->seek(0);
}
sprintf(buf, "%c", c);
_file->write(buf, 1);
_current_byte++;
return 0;
}

size_t SerialFlashPrint::write(const uint8_t *buffer, size_t size){
_file->erase();
_file->seek(0);
_file->write(buffer, size);
_file->write(NULL, 1);
return 0;
};

Обычно вы используете функцию печати как: root.printTo (Serial). Этот код основан на абстракции (которую я получил ранее) под названием Chunked output, которую можно увидеть здесь: https://github.com/bblanchon/ArduinoJson/wiki/Bag-of-Tricks

Есть ли у кого-нибудь подсказки для меня, чтобы понять, почему я получаю <unresolved overloaded function type> вместо печати&?

-1

Решение

<unresolved overloaded function type> означает, что компилятор нашел функцию с несколькими перегрузками и не знает, какую использовать.

Скорее всего, у вас есть несколько serialFlashPrint() в вашем коде или библиотеках.

Если нет, то, возможно, вы вызвали Самый неприятный разбор:

SerialFlashPrint serialFlashPrint;   // <- creates an instance of SerialFlashPrint
SerialFlashPrint serialFlashPrint(); // <- declares a function returning a SerialFlashPrint
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]