2013-12-22 64 views
0

我一直在搜索互聯網並要求我的朋友給出一個好的時間在我的代碼中幫助我處理這個小小的錯誤。 這是我嘗試運行:錯誤:從'... * const'類型的臨時類型'..&'的非常量引用的無效初始化

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++和所有英文術語:)

+0

這應該被標記爲'windows'?提供這樣的信息通常是好事,但我不明白它是如何應用的。 – keyser

+0

你在這個函數中有兩個return語句,而且沒有拋出那個錯誤。你的結論是什麼? – Mat

+0

我在最後一個問題中有一個人告訴我應該給操作系統添加標籤,但如果它不合適,我會將其解除標記。 哦,我的天啊,我剛剛在第一次迴歸中添加了''''這個'*',現在很好。我怎麼沒有看到這個:O – Emir

回答

2

更改return thisreturn *this

相關問題