2016-04-02 5 views
-1
#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; 
} 

Deshalb möchte ich auf dem Konsolenbildschirm ein Klasse-Objekt, dessen STAJ ist der größte drucken, in int=a ich bereits die größte, aber ich weiß nicht, wie ein Objekt zu identifizieren, deren STAJ ist am größten. Ich denke, es kann mit Zeiger auf KlasseC++ Klassenzeiger mit Objektargument

Antwort

0

Sie alle Objekte Iterator mit dem größten auf das Element zurück Staj zeigt

auf ein Array oder std :: vector und dann std :: max_element erfolgen, die verwenden setzen können
//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(); 
+0

Vielen Dank, konnte nicht an Lambda-Funktion denken –

Verwandte Themen