#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最大的对象。我认为可以使用类
答案 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();