首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较c++字符串

比较c++字符串
EN

Stack Overflow用户
提问于 2013-01-18 22:46:26
回答 4查看 153关注 0票数 3
代码语言:javascript
复制
class Song {

public:
    const string getAutherName();
}

void mtm::RadioManager::addSong(const Song& song,const Song& song1) {

    if (song.getAutherName() == song1.getAutherName())

}

我得到了这个错误:

代码语言:javascript
复制
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!如何解决这个问题?

EN

回答 4

Stack Overflow用户

发布于 2013-01-18 22:52:32

您的getAutherName()函数不是const,因此无法通过const Song&调用它。如下所示更改函数声明:

代码语言:javascript
复制
class Song {

public:
    const string getAutherName() const;
}
票数 5
EN

Stack Overflow用户

发布于 2013-01-18 22:53:06

您将在const Songs上调用getAutherName(),因此需要将该方法设置为const

代码语言:javascript
复制
const string getAutherName() const;

不清楚为什么要返回const string。或者返回一个string,或者返回一个常量引用:

代码语言:javascript
复制
const string& getAutherName() const;
string getAutherName() const;
票数 2
EN

Stack Overflow用户

发布于 2013-01-18 22:51:38

std::stringbasic_string<char, std::char_traits<char>, std::allocator<char> >的类型定义函数,编译器只是在错误消息中扩展类型定义函数。

然而,我不知道为什么代码不能工作。你似乎已经删除了错误信息中‘的一部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14401342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档