[英]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.