Dwa warunki w klasach- jak dodać?

0

Cześć,
do napisania mam program, który wyświetla listę elementów.
Używam do tego dwóch klas, gdzie 1. jest podstawą dla tej 2.
Każdy element tej listy musi mieć unikatowe ID (klucz), jeśli klucz się by powtórzył, to element nie jest dodawany do listy.
**Dodatkowym warunkiem jest ustawienie elementów listy alfabetycznie. **

Dotychczas używałam jednej struktury, ale po konwersji poprzedniego programu na klasy, nie jestem w stanie dobrze wskazać miejsca, gdzie wstawić warunki. Pliki źródłowe w załącznikach. (Main jest tylko do testów). Dzięki za wszelkie wskazówki :)


Moje headery:

#ifndef COUNTRY_H
#define COUNTRY_H
#include <iostream>
#include <cstring>
using namespace std;


class Country
{
int key;
char *name;
int data;
Country *next;
Country *head = NULL;

public:
Country(int key,char *name,int data);
~Country();
void print();

int get_key();
const char* get_name();
int get_data();
Country* get_next();
void set_next(Country* next);

};
#endif // COUNTRY_H

#ifndef COUNTRYLIST_H
#define COUNTRYLIST_H
#include <iostream>
#include <cstring>
#include "Country.hpp"

using namespace std;

class CountryList
{

Country *head;
public:

CountryList();
~CountryList();
void add_element (int key,char *name, int new_data);
void remove_element(int key);
void print();
};

#endif // COUNTRYLIST_H
2

Tych warunków nie masz mieć "w klasie", tylko w kontenerze je przetrzymującym.

0

zazwyczaj nie używam fachowego słownictwa dot. programowania (muszę to zmienić :)),
o to mi chodziło
ale to żadna wskazówka... :/
gdzie mam zaimplementować tmp. kontener ?

0

Jeśli interesuje Cię tylko poprawność działania i niewielka ilość włożonego trudu to możesz pobawić się Boost.MultiIndex:

struct MyData
{
	unsigned id;
	string name;
};

using MyContainer = multi_index_container<
	MyData,
	indexed_by<
		ordered_non_unique<member<MyData, string, &MyData::name>>,
		ordered_unique<member<MyData, unsigned, &MyData::id>>
	>
>;

indeksowanie po id Cię nie interesuje, ale pozwala na odrzucenie duplikatów.
http://melpon.org/wandbox/permlink/mnB3cmcJhpHLTr8W

1 użytkowników online, w tym zalogowanych: 0, gości: 1