gpt4 book ai didi

c++ - 如何在 C++ 的 OOP 中使用 >> 运算符

转载 作者:行者123 更新时间:2023-11-28 06:54:50 26 4
gpt4 key购买 nike

我正在将命令式 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-value required as left operand of assignment

我确定这很容易解决,但我不知道哪里出了问题。

谢谢你的帮助。


已解决:有人发现了这个错误,是的,这是一个愚蠢的错误:解决方案是使用 set 方法而不是 get 方法。

谢谢大家! :)

最佳答案

我想问题不在于 operator>>,而在于行:song.getId() = nextSong;getId() 好像返回了一个r-value(r-value是一个临时值),那么不可能影响̀nextSong到一个临时值。考虑编写一个 setId(..) 方法,并调用它。

关于c++ - 如何在 C++ 的 OOP 中使用 >> 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23318348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com