【发布时间】:2013-01-07 16:00:14
【问题描述】:
const string& mtm::RadioManager::getBestSong() const {
string& most_popular_song=tmp.getName();
most_popular_song = current_song.getName();
return most_popular_song;
}
string mtm::Song::getName() const {
return this->song_name;
}
class Song {
string song_name;
public:
string getName() const;
}
我得到这个错误:
从“std::string{aka”类型的右值对“std::string& {aka std::basic_string&}”类型的非常量引用的初始化无效 std::basic_string}'
我做不到const string& most_popular_song=tmp.getName();
因为我将其更改为tmp.getName(); 即返回string!
我应该怎么做才能摆脱这个错误?
【问题讨论】:
-
“因为我要改成
tmp.getName()”是什么意思?究竟改变了什么? -
@AndreyT 我认为他的意思是“我将其更改为
current_song.getName();” -
抱歉忘记了这行:const Song& tmp = *(all_songs.begin());
-
之前:string& most_popular_song=tmp.getName();
标签: c++ methods reference initialization return