簡體   English   中英

如何在C ++中的OOP中使用>>運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM