错误:类型'..&'的非const引用的初始化无效来自'... * const'类型的临时

时间:2013-12-22 19:52:46

标签: c++ windows operator-overloading

我一直在网上搜索并向我的朋友们寻求一个小时的答案来帮助我解决代码中的这个小错误。 这是我尝试运行的:

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'|

它显示我的operator =:

中的错误
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 ++和所有英语术语:)

1 个答案:

答案 0 :(得分:3)

return this更改为return *this