2014-09-03 55 views
-4

我需要爲此代碼創建一個頭文件。我如何爲這段代碼創建一個頭文件?

#include "iostream" 
using namespace std; 
#include <string> 
#include <vector> 
#include <algorithm> 

class persoana { 
private: 
    string nume; 
    int an_nastere; 
    char sex; 

public: 
    persoana() { 
     string nume; 
     cout << "Nume: "; 
     cin.ignore(); 
     getline(cin, nume); 
     set_nume(nume); 
     int an_nastere; 
     cout << "An nastere: "; 
     cin >> an_nastere; 
     set_an_nastere(an_nastere); 
     char sex; 
     cout << "Sex: "; 
     cin >> sex; 
     set_sex(sex); 
    } 
    ~persoana() {} 

    string get_nume() const { return nume; } 
    void set_nume(string nume_nou) { 
     if (nume != nume_nou) { 
      nume = nume_nou.c_str(); 
     } 
    } 
    int get_an_nastere() const { return an_nastere; } 
    void set_an_nastere(int an_nastere_nou) { 
     if (an_nastere != an_nastere_nou) 
      an_nastere = an_nastere_nou; 
    } 
    char get_sex() const { return sex; } 
    void set_sex(char sex_nou) { 
     if (sex != sex_nou) 
      sex = sex_nou; 
    } 
}; 

ostream& operator<<(ostream& out, const persoana& p) { 
    return out << p.get_nume() << " - " << p.get_an_nastere() << " - " 
       << p.get_sex() << endl; 
} 

bool dupa_nume(persoana* p1, persoana* p2) { 
    return (p1->get_nume() < p2->get_nume()); 
} 
bool dupa_varsta(persoana* p1, persoana* p2) { 
    return (p1->get_an_nastere() > p2->get_an_nastere()); 
} 

class baza_de_date { 
private: 
    vector<persoana*> vector_persoane; 
    int n; 

public: 
    baza_de_date(){}; 
    baza_de_date(int dim) { 
     if (dim > 0) { 
      n = dim; 
      vector_persoane.reserve(n); 
     } 
    } 
    ~baza_de_date() { 
     for (int i = 0; i < vector_persoane.size(); i++) 
      delete vector_persoane[i]; 
     vector_persoane.clear(); 
    } 
    void inserare() { vector_persoane.push_back(new persoana()); } 
    void afisare() { 
     for (int i = 0; i < vector_persoane.size(); i++) 
      cout << *vector_persoane[i]; 
    } 
    void eliminare(string nume) { 

     vector<persoana*>::iterator it; 
     for (it = vector_persoane.begin(); it != vector_persoane.end();) { 
      if ((*it)->get_nume() == nume) { 
       delete *it; 
       it = vector_persoane.erase(it); 
      } else 
       ++it; 
     } 
    } 
    void eliminare(int an_nastere) { 
     vector<persoana*>::iterator it; 
     for (it = vector_persoane.begin(); it != vector_persoane.end();) { 
      if ((*it)->get_an_nastere() == an_nastere) 
       it = vector_persoane.erase(it); 
      else 
       ++it; 
     } 
    } 
    void eliminare(char sex) { 
     vector<persoana*>::iterator it; 
     for (it = vector_persoane.begin(); it != vector_persoane.end();) { 
      if ((*it)->get_sex() == sex) 
       it = vector_persoane.erase(it); 
      else 
       ++it; 
     } 
    } 
    void sortare_dupa_nume() { 
     sort(vector_persoane.begin(), vector_persoane.end(), dupa_nume); 
    } 
    void sortare_dupa_varsta() { 
     sort(vector_persoane.begin(), vector_persoane.end(), dupa_varsta); 
    } 
}; 

int main() { 
    baza_de_date bd; 
    int o; 
    do { 
     system("cls"); 
     bd.afisare(); 
     cout << "\n1.Adauga persoana\n2.Elimina persoana dupa nume\n3.Elimina " 
       "persoana dupa anul nasterii\n4.Elimina persoana dupa " 
       "sex\n5.Afiseaza dupa nume\n6.Afiseaza dupa " 
       "varsta\n0.Iesire\nOptiunea: "; 
     cin >> o; 
     switch (o) { 
      case 1: { 
       bd.inserare(); 
      } break; 

      case 2: { 
       string nume; 
       cout << "Nume: "; 
       cin.ignore(); 
       getline(cin, nume); 
       bd.eliminare(nume); 
      } break; 

      case 3: { 
       int an_nastere; 
       cout << "An nastere: "; 
       cin >> an_nastere; 
       bd.eliminare(an_nastere); 
      } break; 

      case 4: { 
       char sex; 
       cout << "Sex: "; 
       cin >> sex; 
       bd.eliminare(sex); 
      } break; 

      case 5: { 
       bd.sortare_dupa_nume(); 
      } break; 

      case 6: { 
       bd.sortare_dupa_varsta(); 
      } break; 
     } 
    } while (o); 

    return 0; 
} 
+0

您好。歡迎來到Stack Overflow。當你想知道的是,如何爲課堂創建標題只是噪音,而且很可能會吸引低估和緊密的投票。是你的問題所需的所有代碼?不可以。您應該發佈由虛擬類和虛擬函數組成的最小代碼,然後您應該將答案外推至您的真實代碼。看到@BrianCain給你的答案?只需要代表他的觀點的最低限度的代碼。你的問題應該看起來類似。 – bolov 2014-09-03 18:32:41

回答

2

您必須將類的實現從其接口中分離出來。該過程與C完成的過程類似,但複雜度稍高。

總之,到處都有一對花括號,你需要用分號代替。您還必須將源代碼轉換爲合格。

下面是遵循的模式。考慮每個頭/源對的一個類,但這不是一個固定的規則。

頭:

class baza_de_date 
{ 
private: 
vector<persoana*> vector_persoane; 
int n; 
public: 
baza_de_date(); 
baza_de_date(int dim); 
// ... 
}; 

源:

#include "baza.h" 

baza_de_date::baza_de_date(int dim) 
{      
    if (dim>0) 
    { 
     n=dim; 
     vector_persoane.reserve(n); 
    } 
} 
+0

分離代碼定義(cpp)和聲明(.h)不是一種'必須做的'語言,但是由於各種原因,它是更好的選擇。 – user3791372 2014-09-03 18:14:03

+0

非常感謝你! – tidusanddante 2014-09-03 18:16:54

+0

@ user3791372,上下文是「我需要爲這個代碼創建一個頭文件」,所以答案是「[爲了做到這一點]你必須將...實現從它的接口中分離出來」。 – 2014-09-03 20:11:11

相關問題