[英]How to use the >> operator in OOP in C++
我正在將命令性C ++程序“轉換”為OOP C ++程序,並且我有一個簡單的問題(顯然)。
在原始程序中,我有以下代碼:
Song song = askSong();
if(songExists(song) == false)
{
song.id = nextSong;
}
其中askSong()返回一首帶有用戶指示信息的歌曲。
在OOP中,askSong()的等效函數是運算符>>:
friend istream& operator>>(istream &, Song &song);
我認為將其放入OOP的方式是:
Song song;
cin >> song;
cin.get();
if(songExists(song) == false)
{
song.getId() = nextSong;
}
但是,當我嘗試編譯時,出現以下錯誤:l值需要作為賦值的左操作數
我敢肯定這很容易解決,但是我不知道出什么問題了。
感謝您的幫助。
已解決:有人發現了錯誤,是的,這很愚蠢:解決方案是使用set方法而不是get方法。
謝謝大家! :)
我猜問題不在於operator>>
而在於以下行: song.getId() = nextSong;
。 getId()
似乎返回的r值(R值是臨時值),那么它不可能影響nextSong
到一個臨時的。 考慮編寫一個setId(..)
方法,然后調用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.