I have a class with an overloaded operator:
IPAddress& IPAddress::operator=(IPAddress &other) { if (this != &other) { delete data; this->init(other.getVersion()); other.toArray(this->data); } return *this; }
When I try to compile this:
IPAddress x; x = IPAddress(IPV4, "192.168.2.10");
I get the following error:
main.cc: In function 'int main()': main.cc:43:39: error: no match for 'operator=' in 'x = IPAddress(4, ((const std::string&)(& std::basic_string<char>(((const char*)"192.168.2.10"), ((const std::allocator<char>&)((const std::allocator<char>*)(& std::allocator<char>())))))))' IPAddress.h:28:20: note: candidate is: IPAddress& IPAddress::operator=(IPAddress&)
However, these two works work fine (although they serve me no purpose):
IPAddress x; IPAddress(IPV4, "192.168.2.10") = x;
-
IPAddress x; x = *(new IPAddress(IPV4, "192.168.2.10"));
What's happening? Am I guessing something wrong regarding how the assignment operator works?
Allan source share