Compiling problem with ambiguous overload for 'operator+=' .......

I am not a skilled C and C++ programmer, my thing is MCU-assambler and RF-hardware.

My project is set up a LoRaWAN communication system for testing it's performance, my primary test object is a LoRAGo DOCK LoRaWAN-gateway from Sandbox Electronics.

I have followed instruction in this document:
github - SandboxElectronics/LoRaGoDOCK-Gateway READ.md,

and compiling this with Arduino IDE 1.8.9:
SandboxElectronics/LoRaGoDOCK-Gateway/LoRaGoDOCK-Gateway/
SandboxElectronics/LoRaGoDOCK-Gateway/libraries_dependency.zip

and come so far:
ambiguous overload for 'operator+=' (operand types are 'String' and 'IPAddress')

in file:
_WWWServer

to line:
response+=(IPAddress)ipa[3];

in:
// ----------------------------------------------------------------------------
// PRINT IP
// Output the 4-byte IP address for easy printing.
// As this function is also used by _otaServer.ino do not put in #define
// ----------------------------------------------------------------------------
static void printIP(IPAddress ipa, const char sep, String& response)
{
response+=(IPAddress)ipa[0]; response+=sep;
response+=(IPAddress)ipa[1]; response+=sep;
response+=(IPAddress)ipa[2]; response+=sep;
response+=(IPAddress)ipa[3];
}

Have tried to google about "overload", but my knowledge in C++ is not enough to sort out this programming problem.

So I hope that someone can help me.
/Ulf

Although the type of ipa is indeed IPAddress, the types of the elements of IPAddress are uint8_t:

It doesn't make sense to cast the uint8_t to IPAddress. Just remove the casts from your code and it should work as expected:

response+=ipa[0]; response+=sep;
response+=ipa[1]; response+=sep;
response+=ipa[2]; response+=sep;
response+=ipa[3];

Ulf1:
Have tried to google about "overload", but my knowledge in C++ is not enough to sort out this programming problem.

The String class overloads the += operator so it can be used to append to the String:

There is no specific overload of that operator for an IPAddress parameter type and the compiler doesn't know how to convert the IPAddress type to any of the types of the existing operator overloads.

You need to use v2.4.2 of the esp8266 board lib.

Boards Manager - ESP8266 - use version 2.4.2

pert:
There is no specific overload of that operator for an IPAddress parameter type and the compiler doesn’t know how to convert the IPAddress type to any of the types of the existing operator overloads.

I think the “ambiguous overload” error means that it knows how to convert an IPAddress into SEVERAL different types that can be ‘added’ to a String… and it doesn’t want to guess which conversion you want it to do.