Dwa warunki w klasach- jak dodać?

Dwa warunki w klasach- jak dodać?
SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
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:

Kopiuj
#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

Kopiuj
#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
kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
2

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

SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
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 ?

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

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

Kopiuj
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.