У меня есть класс с перегруженным оператором:
IPAddress& IPAddress::operator=(IPAddress &other) {
if (this != &other) {
delete data;
this->init(other.getVersion());
other.toArray(this->data);
}
return *this;
}
Когда я пытаюсь скомпилировать это:
IPAddress x;
x = IPAddress(IPV4, "192.168.2.10");
Я получаю следующую ошибку:
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&)
Тем не менее, эти два прекрасно работают (хотя они не служат мне никакой цели):
IPAddress x;
IPAddress(IPV4, "192.168.2.10") = x;
-
IPAddress x;
x = *(new IPAddress(IPV4, "192.168.2.10"));
Что происходит?Я предполагаю что-то неправильное в том, как работает оператор присваивания?