带有对象参数的C ++类指针

时间:2016-04-02 13:54:25

标签: c++ class

#include<iostream>
#include<fstream>
using namespace std;
class Emp
{
    string name;
    string rep;
    int age;
    int staj;
public:
    Emp(ifstream &f){f>>name>>rep>>age>>staj;}
    Emp(string a,string b,int c, int d) : name(a), rep(b), age(c), staj(d){}
    string getName();
    string getRep();
    int getAge();
    int getStaj();
    void printEmp();
};

string Emp::getName()
{
    return name;
}
string Emp::getRep()
{
    return rep;
}
int Emp::getAge()
{
    return age;
}
int Emp::getStaj()
{
    return staj;
}
void Emp::printEmp()
{
    cout<<name<<" "<<rep<<" "<<age<<" "<<staj<<endl;
}

int main()
{
    ifstream ifs("Text.txt");
    Emp A(ifs);
    Emp B(ifs);
    Emp C(ifs);
    int a=max(A.getStaj(),B.getStaj());
    a=max(a,C.getStaj());
    cout<<a;
}

所以我想在控制台屏幕上打印一个STAJ最大的类对象, 在int=a我已经拥有最大的,但我不知道如何识别STAJ最大的对象。我认为可以使用类

上的指针来完成

1 个答案:

答案 0 :(得分:0)

您可以将所有对象放到数组或std :: vector中,然后使用std :: max_element返回指向具有最大Staj的元素的迭代器

//create array of Emp
Emp* list[] = {&A, &B, &C};

//find Emp with max Staj using lambda comparer
auto maxElement = std::max_element(begin(list), end(list), 
    [](auto x, auto y) {return x->getStaj() < y->getStaj();});

//maxElement is an iterator so you need to get the actual value using *
(*maxElement)->printEmp();