2017-04-09 24 views
-2

我試圖製作一款可以保存進度的遊戲。 我已經做到了這一點,它的工作,但現在它不再工作。'authlog = myfile'中'operator ='的模糊超載

錯誤:

43: Ambiguous overload for 'operator=' in 'authlog = myfile'
note: candidates are: std::basic_string<_CharT,_Traits,_Alloc>& std::basic_string<_CharT,Traits,..........etc

,導致該錯誤代碼:

if (myfile.is_open()) 
    { 
     while (getline (myfile,line)) 
     { 
      cout << "You already have a save file!\n"; 
     } 
     myfile.close(); 
     myfile.clear(); 
     authlog = myfile; 
     myfile.open("username.txt"); 
     cout << "Enter your username:\n"; 
     cin >> auth; 
     if(auth == authlog) 
     { 

     } 
    } 
+0

'authlog'的類型是什麼? – Jiahao

+0

這不是導致錯誤的代碼...請提交驗證碼.. – Arvindsinc2

+0

驗證日誌是一個字符串,但在此處未顯示。 – Loopahnoob

回答

0

根據我的經驗,這個錯誤可以通過鑄造一個操作數爲其他解決 - 換句話說,它看起來像authlog可能不是與myfile相同的類型。

編輯:在這種情況下,您也正在清除文件,所以也許你寧願做authlog =「」;

在任何情況下,您都不能將文件視爲字符串。您可以將字符串保存到它或從中取出字符串,但它不是字符串。

+0

謝謝,但我試圖確定如果字符串auth等於字符串authlog。即使我做'如果(auth == myfile)它仍然無法正常工作。 – Loopahnoob

+0

右鍵 - 這是因爲myfile不是字符串。 –

0

感謝每一位回答。 的問題是,我忘了把

while (getline (myfile,auth)) 

中的代碼。