[英]How to access class private member in standard library algorithms? c++
如何在不破坏封装的情况下获得标准库算法中的私有或受保护成员? 是否可以使用friend classes
来获取私有成员或受保护成员? 代码如下所示。
class Person
{
private:
double score;
std::string name;
public:
Person(std::string name, double score)
{
this->score = score;
this->name = name;
}
bool operator()(const Person& obj) const
{
return obj.score > 180;
}
bool operator <(const Person& obj) const
{
return name < obj.name;
}
};
int main()
{
std::vector<Person> person
{
Person("John",200),
Person("Trump",204),
Person("Biden",205),
Person("Obama",170),
Person("Sam",180)
};
std::string Fname = "Sam";
auto res3 = find_if(person.begin(), person.end(), [&Fname](const Person &p)
{
return p.name == Fname;
});
}
只需在您的类定义中添加一个简单的“getter”:
const std::string& getName() const { return name; }
后来:
return p.getName() == Fname;
对于更复杂的情况下,你可以friend
其他类或函数。 您还可以定义operator==
将该对象与字符串进行比较,这可能更容易,因为您可以执行p == Fname
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.