class Song {
public:
const string getAutherName();
}
void mtm::RadioManager::addSong(const Song& song,const Song& song1) {
if (song.getAutherName() == song1.getAutherName())
}我得到了这个错误:
Invalid arguments ' Candidates are: std::basic_string<char,std::char_traits<char>,std::allocator<char>> getAutherName() ' - passing 'const mtm::Song' as 'this' argument of 'std::string mtm::Song::getAutherName()' discards qualifiers [- fpermissive]为什么它使用basic_string而不是string!如何解决这个问题?
发布于 2013-01-18 22:52:32
您的getAutherName()函数不是const,因此无法通过const Song&调用它。如下所示更改函数声明:
class Song {
public:
const string getAutherName() const;
}发布于 2013-01-18 22:53:06
您将在const Songs上调用getAutherName(),因此需要将该方法设置为const
const string getAutherName() const;不清楚为什么要返回const string。或者返回一个string,或者返回一个常量引用:
const string& getAutherName() const;
string getAutherName() const;发布于 2013-01-18 22:51:38
std::string是basic_string<char, std::char_traits<char>, std::allocator<char> >的类型定义函数,编译器只是在错误消息中扩展类型定义函数。
然而,我不知道为什么代码不能工作。你似乎已经删除了错误信息中‘的一部分。
https://stackoverflow.com/questions/14401342
复制相似问题