CLASS REPOSITORY
#ifndef REPO_H
#define REPO_H
#include "Entity.h"
#include <vector>
#include <algorithm>
class Repo
{
protected:
vector<Entity> entities;
public:
Repo()
{
}
~Repo()
{
}
void addItem(Entity &e) {
entities.push_back(e);
}
int getSize() {
return entities.size();
}
void deletion(Entity &e)
{
vector<Entity>::iterator it;
it = std::find(entities.begin(), entities.end(), e);
if (it!=entities.end())
{
entities.erase(it);
}
}
};
#endif // REPO_H
CLASS REPOSITORYFILE
#ifndef REPOFILE_H
#define REPOFILE_H
#include "Repo.h"
#include <fstream>
#include <algorithm>
class RepoFile : public Repo
{
private:
const char *file_name;
void saveToFile() {
ofstream fo(file_name);
for(Entity e: entities)
fo << e.toString() << endl;
fo.close();
}
public:
RepoFile(const char*);
~RepoFile();
void addItem(Entity &);
void deletion(Entity &);
};
RepoFile::RepoFile(const char *f_name) : Repo(){
file_name = f_name;
ifstream f(file_name);
while(!f.eof()){
int code;
f>>code;
Entity e(code);
entities.push_back(e);
}
f.close();
}
RepoFile::~RepoFile()
{
}
void RepoFile::addItem(Entity &e) {
Repo::addItem(e);
saveToFile();
}
void RepoFile::deletion(Entity &e)
{
Repo::deletion(e);
saveToFile();
}
#endif // REPOFILE_H
MAIN
#include <iostream>
#include "RepoFile.h"
using namespace std;
#include <assert.h>
int main()
{
RepoFile rf("C:\\Users\\hp\\Desktop\txt.txt");
assert(rf.getSize() == 3);
Entity e(4);
rf.addItem(e);
assert(rf.getSize() == 4);
rf.deletion(e);
assert(rf.getSize() == 3);
cout << "Tests have passed!" << endl;
return 0;
}
OUTPUT: terminate called after throwing an instance of 'std::bad_alloc'
