【发布时间】:2021-01-26 07:41:06
【问题描述】:
我是 C++ 新手,正在尝试实现 lessThan() 成员函数,该函数将左侧的 Person(this 人)与作为参数传入的 Person 进行比较;如果一个人的名字按字母顺序排在第一位,则该人被视为“小于”另一个人。
我在下面创建了我的函数,但是当我运行它时出现错误:
无法将参数 '1' 的 'std::__cxx11::string {aka std::__cxx11::basic_string
}' 转换为 'const char*' 到 'int strcmp(const char*, const char* )'
除此之外,我想知道我是否正确使用了this 关键字和strcmp() 函数?应该是< 0吗?
bool Person::lessThan(Person* per){
if(strcmp(this->name, per->name) < 0){
return true;
}else{
return false;
}
}
【问题讨论】:
-
您已将此标记为
c,但您似乎正在使用c++和std::string。在这种情况下,您需要做的就是return name < per->name;并完成它,因为std::string允许进行比较并且它是首选方法。为了完整起见,您可以像这样修复您的代码:if(strcmp(this->name.c_str(), per->name.c_str()) < 0){但最好不要这样做。
标签: c++ object boolean constants strcmp