C++ 如何为该代码创建头文件?
我需要为这段代码创建一个头文件C++ 如何为该代码创建头文件?,c++,C++,我需要为这段代码创建一个头文件 #include "iostream" using namespace std; #include <string> #include <vector> #include <algorithm> class persoana { private: string nume; int an_nastere; char sex; public: persoana() { string
#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;
}
#包括“iostream”
使用名称空间std;
#包括
#包括
#包括
persoana类{
私人:
串珠;
内坦纳斯特雷;
性别;
公众:
persoana(){
串珠;
这是一个很好的例子;
安纳斯特雷(安纳斯特雷);
性别;
不能>性;
设定性别(性别);
}
~persoana(){}
字符串get_nume()常量{return nume;}
无效集合(字符串nume\u nou){
如果(nume!=nume\u nou){
nume=nume_nou.c_str();
}
}
int get_an_nastere()常量{return an_nastere;}
无效集{
如果(an_nastere!=an_nastere_nou)
an_nastere=an_nastere_nou;
}
char get_sex()常量{return sex;}
无效集_sex(char sex_nou){
如果(sex!=sex_nou)
性别=性别;
}
};
ostream&operatorget_sex()=性别)
it=向量_persoane.擦除(it);
其他的
++它;
}
}
虚无索塔雷·杜帕·努姆(){
排序(vector_persoane.begin()、vector_persoane.end()、dupa_nume);
}
void sortare_dupa_varsta(){
排序(vector_persoane.begin()、vector_persoane.end()、dupa_varsta);
}
};
int main(){
巴扎迪奥日期bd;
INTO;
做{
系统(“cls”);
bd.afisare();
cout>o;
开关(o){
案例1:{
bd.inserever();
}中断;
案例2:{
串珠;
这是一个很好的例子;
bd.eliminare(安纳斯特雷);
}中断;
案例4:{
性别;
不能>性;
bd.eliminare(性别);
}中断;
案例5:{
bd.sortare_dupa_nume();
}中断;
案例6:{
bd.sortare_dupa_varsta();
}中断;
}
}而(o),;
返回0;
}
必须将类的实现与其接口分开。这个过程类似于C语言,只是增加了一点复杂性
简而言之,只要有一对大括号,你就需要一个分号。您还必须将源转换为正确限定的源
下面是要遵循的模式。考虑每个报头/源对的一个类,但这不是固定的规则。
标题:
class baza_de_date
{
private:
vector<persoana*> vector_persoane;
int n;
public:
baza_de_date();
baza_de_date(int dim);
// ...
};
分离代码定义(cpp)和声明(.h)不是一种“必须做”的语言,但由于各种原因,它是一种更可取的语言。@user3791372,上下文是“我需要为此代码创建头文件”,因此答案是“[为了这样做],您必须将…实现与其接口分离”。您好。欢迎来到堆栈溢出。当你只想知道如何为一个类创建一个标题时,把你所有的代码都扔给我们只是一个噪音,很可能会吸引反对票和接近票。你的问题需要所有的代码吗?不可以。您应该发布一个由伪类和伪函数组成的最小代码,然后将答案外推到实际代码中。看到BrianCain给你的答案了吗?只是表示他的观点所需的最小代码。你的问题应该是相似的。
#include "baza.h"
baza_de_date::baza_de_date(int dim)
{
if (dim>0)
{
n=dim;
vector_persoane.reserve(n);
}
}