Skip to content

size_t availableForWrite() is hidding the virtual method #433

Description

@moritz89

This compile error is thrown when using with esp-idf:

In file included from /home/moritz/Sandbox/esp-idf-hi/managed_components/espressif__arduino-esp32/libraries/WiFi/src/WiFi.h:30,
                 from /home/moritz/Sandbox/esp-idf-hi/main/managers/wifi_network.h:3,
                 from /home/moritz/Sandbox/esp-idf-hi/main/managers/wifi_network.cpp:1:
/home/moritz/Sandbox/esp-idf-hi/managed_components/espressif__arduino-esp32/cores/esp32/Print.h:77:15: error: 'virtual int Print::availableForWrite()' was hidden [-Werror=overloaded-virtual=]
   77 |   virtual int availableForWrite() {
      |               ^~~~~~~~~~~~~~~~~
In file included from /home/moritz/Sandbox/esp-idf-hi/components/esp-nimble-cpp/src/NimBLEDevice.h:311,
                 from /home/moritz/Sandbox/esp-idf-hi/main/managers/ble_server.h:3,
                 from /home/moritz/Sandbox/esp-idf-hi/main/managers/service_getters.h:4,
                 from /home/moritz/Sandbox/esp-idf-hi/main/managers/action_controller.h:3,
                 from /home/moritz/Sandbox/esp-idf-hi/main/managers/services.h:6,
                 from /home/moritz/Sandbox/esp-idf-hi/main/managers/wifi_network.cpp:5:
/home/moritz/Sandbox/esp-idf-hi/components/esp-nimble-cpp/src/NimBLEStream.h:89:12: note:   by 'size_t NimBLEStream::availableForWrite() const'
   89 |     size_t availableForWrite() const;
      |            ^~~~~~~~~~~~~~~~~

The workaround is to add:

add_compile_options(
    $<$<COMPILE_LANGUAGE:CXX>:-Wno-overloaded-virtual>
)

in the top level CMakeLists.txt file. Would it be sensible to update the signature and cast the return from m_txBuf->freeSize() ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions