我如何为这个代码制作一个头文件
How do i make a header file for this code?
我需要为这段代码创建一个头文件。
#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 persoanan2.Elimina persoana dupa numen3.Elimina "
"persoana dupa anul nasteriin4.Elimina persoana dupa "
"sexn5.Afiseaza dupa numen6.Afiseaza dupa "
"varstan0.IesirenOptiunea: ";
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;
}
必须将类的实现与其接口分离。这个过程与使用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);
}
}
相关文章:
- 挂起和取消挂起一个文件DLL
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- C++试图读取一个文件并输出到另一个文本文件
- 如何从另一个文件继承私有成员变量和公共函数
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何将class.cpp和class.hpp编译为一个.o文件
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 如何从整个磁盘中排除要装载的一个文件
- 如何将模板和非模板函数放在一个文件中
- 如何在安卓工作室中将c ++头文件从一个文件夹导入到另一个文件夹?
- 使用 scope 运算符 (::) 引用另一个文件中的类
- JNI,使用两个 .so 文件时出错,其中一个文件需要另一个文件
- 为什么我不能从同一目录中的另一个文件中 #include 我的类?
- 在 c++ 中打开文件、删除标点符号并追加到另一个文件中
- C++ 如何将两个 makefile 对象目标规则(位于另一个文件夹中)合并到一个目标/规则中?
- 是否可以将子进程的 stdout 重定向到父进程中的另一个文件?
- c++ 提升如果 .extension() == " "这意味着这个文件是一个文件夹?
- 是否可以在 c++ 中创建一个文件并为其提供属性以将其隐藏?(在 Ubuntu 上)
- 我需要编写一个程序来读取一个文件,该文件将输出所有唯一的整数,如果已经看到整数,它将被关闭
- 如何在标准c ++中流式传输/读取二进制文件的中间部分并写入另一个文件?