错误:类型为 '.&' 来自类型的临时 '..*康斯特'



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

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

最新更新