fix removeState, rm addState, add pop override to fit inheritence

This commit is contained in:
gandc committed 2024-05-23 04:01:45 +03:00
1 parent 5cdcca7290
commit c55592d210
1 file changed
+16 -4
+16 -4
View File
@@ -421,8 +421,12 @@ protected:
public: public:
// Добавление нового государства в начало списка // Добавление нового государства в начало списка
void addState(const State& state) { //void addState(const State& state) {
// stateList.push(state);
//}
virtual Element<State>* push(const State& state) override {
stateList.push(state); stateList.push(state);
return stateList.getHead();
} }
friend ostream& operator<<(ostream& os, const StateList& stateList) { friend ostream& operator<<(ostream& os, const StateList& stateList) {
Element<State>* current = stateList.stateList.getHead(); Element<State>* current = stateList.stateList.getHead();
@@ -434,6 +438,15 @@ public:
} }
// Удаление государства из начала списка // Удаление государства из начала списка
virtual Element<State>* pop() override {
try {
return new Element<State>(removeState());
}
catch (const logic_error& e) {
cout << e.what() << endl;
return nullptr;
}
}
State removeState() { State removeState() {
Element<State>* element = stateList.pop(); Element<State>* element = stateList.pop();
if (element) { if (element) {
@@ -443,7 +456,6 @@ public:
} }
throw logic_error("State list is empty"); throw logic_error("State list is empty");
} }
// Поиск государства по названию // Поиск государства по названию
State* findStateByName(const string& name) { State* findStateByName(const string& name) {
Element<State>* current = stateList.getHead(); Element<State>* current = stateList.getHead();
@@ -588,8 +600,8 @@ int main() {
StateList* states = new StateList(); StateList* states = new StateList();
//for 6.2 //for 6.2
states->addState(State("USA", "Washington D.C.", "English", 328000000, 9833510)); states->push(State("USA", "Washington D.C.", "English", 328000000, 9833510));
states->addState(State("India", "New Delhi", "Hindi", 1380000000, 3287263)); states->push(State("India", "New Delhi", "Hindi", 1380000000, 3287263));
// Сохраняем список состояний в файл // Сохраняем список состояний в файл
states->save("states.txt"); states->save("states.txt");