我一直在互联网上搜索,并向我的朋友询问答案,以帮助我解决代码中的这个小错误。这是我尝试运行的内容:
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
。