[C++] Własny kontener podobny do tablicy

Awatar użytkownika
Peter Zof
Użytkownik
Użytkownik
Posty: 585
Rejestracja: 30 cze 2012, o 16:07
Płeć: Mężczyzna
Lokalizacja: Warszawa (MIMUW) / Pułtusk
Podziękował: 88 razy
Pomógł: 66 razy

[C++] Własny kontener podobny do tablicy

Post autor: Peter Zof »

Witam, od kilku godzin próbuje napisać bibliotekę w stylu C++ (od tak dla poćwiczenia wskaźników).
Celem jest napisanie struktury, która będzie pełnić rolę tablicy. Jednak, różnicą pomiędzy tą strukturą (a tablicą) ma być to iż nie musimy podawać wstępnie jaka ma być wielkość tablicy (możemy to określić już w czasie programu), dodatkowo chciałbym aby ta struktura w miarę potrzeb miała możliwość automatycznego powiększenia indeksu.

Kod: Zaznacz cały

//PLIK: CHolder.h

struct CHolder{
  int size;                //rozmiar każdego elementu
  int pojemnosc;       //ilość elementów w naszym pojemniku
  int nastepny;         //następny element

  void initialize(int size);    //funkcja odpowiadająca za wstępną inicjalizację
};

Kod: Zaznacz cały

//PLIK: CHolder.cpp

#include <iostream>
#include "CHolder.h"
using namespace std;

void CHolder::initialize(int sz)
{
  size = sz;
  pojemnosc = 0;
  next = 0;
}
Teraz mam taki problem iż nie wiem jak zapisywać do "kontenera" element (ponieważ nie jest on stworzony dla konkretnego typu danych, więc nie mogę utworzyć "miejsca" na element jako składowej struktury). Bardzo proszę o pomoc.
Ostatnio zmieniony 31 paź 2013, o 12:56 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Protected_48
Użytkownik
Użytkownik
Posty: 9
Rejestracja: 9 paź 2013, o 17:41
Płeć: Mężczyzna

[C++] Własny kontener podobny do tablicy

Post autor: Protected_48 »

Próbujesz napisać coś na wzór kolejki (queue). Aczkolwiek zastanowiłbym się, czy jest sens tworzenia czegoś, co jest w STL.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Własny kontener podobny do tablicy

Post autor: Afish »

Możesz trzymać element jako void* lub zastosować szablony. Drugie rozwiązanie jest powszechnie przyjęte jako poprawne.
Awatar użytkownika
Peter Zof
Użytkownik
Użytkownik
Posty: 585
Rejestracja: 30 cze 2012, o 16:07
Płeć: Mężczyzna
Lokalizacja: Warszawa (MIMUW) / Pułtusk
Podziękował: 88 razy
Pomógł: 66 razy

[C++] Własny kontener podobny do tablicy

Post autor: Peter Zof »

Właśnie chodzi mi o to, aby użyć tego "pustego" wskaźnika void*. Gdy wysyłam adres argumentu do funkcji i odbieram go takim wskaźnikiem jak później mogę go zapisać do struktury?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Własny kontener podobny do tablicy

Post autor: Afish »

Jako wskaźnik do obiektu. Trzymanie całego obiektu w strukturze byłoby po pierwsze bardzo trudne (bo musiałbyś tworzyć obiekt struktury w otoczeniu obiektu, który ta struktura miałaby przechowywać), a po drugie podejrzane politycznie - kto wtedy byłby właścicielem obiektu i na kim ciążyłaby odpowiedzialność za jego zwolnienie? Możesz go oczywiście skopiować, ale wtedy musiałbyś znać jego typ (aby przeprowadzić poprawnie głębokie kopiowanie).
ODPOWIEDZ