Я искал интернет и просил моих друзей ответить на хороший час, чтобы помочь мне с этой маленькой ошибкой в моем коде. Это то, что я пытаюсь запустить:
BinStabloMapa<string,string> m;
string s1("Sarajevo"), s2("Zagreb");
m[s1] = "BiH";
m[s2] = "Hrvatska";
{
BinStabloMapa<string,string> m2(m);
BinStabloMapa<string,string> m3;
m3=m;
m.obrisi(s1);
cout << m2.brojElemenata() << " ";
cout << m2[s1] << " ";
cout << m3.brojElemenata() << " ";
cout << m3[s1] << " ";
}
cout << m.brojElemenata();
cout << " '" << m[s1] << "' ";
m.obrisi();
cout << m.brojElemenata();
cout << " '" << m[s2] << "'";
И это ошибка: error: invalid initialization of non-const reference of type 'BinStabloMapa< >&' from a temporary of type 'BinStabloMapa< >* const'|
Он показывает ошибку в моем операторе =:
template <typename TipKljuca,typename TipVrijednosti>
BinStabloMapa<TipKljuca,TipVrijednosti>& BinStabloMapa<TipKljuca,TipVrijednosti>::operator =(const BinStabloMapa<TipKljuca,TipVrijednosti> &m)
{
if(this==&m) return this; // ERROR APPEARS HERE
obrisiPomocna(korijen);
korijen=0;
kopiraj(korijen, m.korijen, 0);
return *this;
}
Я не совсем уверен, что я делаю неправильно здесь, так как меня научили делать оператор = следующим образом: защита саморазрушения + деструктор + конструктор копирования. Код, который я пытаюсь запустить, должен быть способен скомпилировать, поскольку это автотест для всей моей программы. Извините, если я не объяснил это слишком хорошо, все еще изучая C++ и все английские термины :)
Измените return this
чтобы return *this
.
windows
? Часто бывает полезно предоставить такую информацию, но я не понимаю, как она применима.