2016-11-19 12 views
-1

Print.hの抽象クラスを作成して、SerialFlashというSPIフラッシュチップライブラリを抽象化するクラスを作成しました。 https://github.com/bblanchon/ArduinoJson/blob/master/include/ArduinoJson/Internals/JsonPrintable.hppC++多型印刷機能が正しく解決されない

これは、クラスのヘッダファイルです:

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; 
}; 

、あなたが使用printは以下のように機能します:root.printTo(Serial)。このコードはここで見ることができチャンク出力と呼ばれる(私は以前に動作するようになっている)の抽象化に基づいています:https://github.com/bblanchon/ArduinoJson/wiki/Bag-of-Tricks

誰もが、私は<unresolved overloaded function type>代わりの印刷&を取得しています理由を理解するために私のために任意の手掛かりを持っていますか?

答えて

0

<unresolved overloaded function type>は、コンパイラがいくつかの過負荷を持つ関数を見つけ、どちらを使用するかを知らないことを意味します。

あなたのコードやライブラリには、おそらくいくつかのserialFlashPrint()があります。

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

がない場合は、Most vexing parse引き起こしたこと

関連する問題