簡體   English   中英

如何在標准庫算法中訪問類私有成員? C++

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM