Print.h의 추상 클래스를 만들어 SerialFlash라는 SPI 플래시 칩 라이브러리를 추상화하는 클래스를 만들었습니다. https://github.com/bblanchon/ArduinoJson/blob/master/include/ArduinoJson/Internals/JsonPrintable.hppC++ polymorphic 인쇄 기능이 제대로 해석되지 않습니다.
이 클래스의 헤더 파일입니다 :
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&'
위의 오류에서 참조 파일은 여기에 있습니다 : 나는 ArduinoJson 라이브러리를 사용하여 인쇄하려고하면 오류가 발생합니다
#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). 내가 대신 인쇄 &의 <unresolved overloaded function type>
을 받고있는 이유 https://github.com/bblanchon/ArduinoJson/wiki/Bag-of-Tricks
사람이 알아낼 나를 위해 어떤 단서를 가지고 있습니까 :이 코드는 (내가 이전에 일을 가지고) 여기에서 볼 수있다 청크 분할 출력라는 추상화를 기반으로?