• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Typy w klasach

0 głosów
501 wizyt
pytanie zadane 14 października 2015 w C i C++ przez 0xf Dyskutant (8,180 p.)

Witam, niedawno zapytalem na forum o cos takiego jak "Szablony funkcji" swoja dorgra bardzo fajna sprawa ale piszac kod i patrzac na bledy uznalem ze jednak robie to w zly sposob.

Mianowicie co chcialem zrobic funkcje ktorej posylamy nazwe, ile_wielkosci, wymiary i typ miala ona sluzyc generowaniu tablic n-wymiarowych o okreslanym przez programiste typie.

Doszedlem do wniosku i to dosyc logicznego ze nie ma co sie bawic tylko miec cos takiego.

class tablica
{
protected :
int n;
int *wymiary=new int [n];
string nazwa;
//I tu sie zaczyna problem bo przy szablonach mielismy cos takiego template<class tablica=string>

public:
void JakasFunkcja()
{cout<<"Nic nie robie "}
};

Dobra, kolejna sprawa jest taka jako ze nie mam zabardzo doswiadczenia to zawartosc takiej tablicy lepiej miec zapisana w pliku txt czy moze jakos inaczej. I czy metode generujaca taka funkcje trzeba odrazu napisac pod zapisywanie zawartosci takiej tablicy. Czy zrobic inna metode ktora to zapisuje.

Z gory dzieki pozdrawiam

2 odpowiedzi

0 głosów
odpowiedź 14 października 2015 przez Patrycjerz Mędrzec (192,320 p.)
Nie możesz inicjalizować składowych klasy w jej deklaracji. Robi się to tylko dla składowych statycznych. W innym przypadku robi się to przez konstruktor.

Co do drugiej części pytania, to zależy to wszystko od projektu kodu. Na początku programowania musisz wiedzieć, aby jak najbardziej hermetyzować składowe klasy. A jak to zrobisz i co metody będą robić - twoja sprawa.
komentarz 14 października 2015 przez maly Nałogowiec (37,190 p.)

Nie możesz inicjalizować składowych klasy w jej deklaracji. Robi się to tylko dla składowych statycznych.

 

Nie zupełnie, od C++11 jest taka możliwość ale w tym wypadku jest to bezsensu bo rozmiar jest nie określony.

komentarz 14 października 2015 przez 0xf Dyskutant (8,180 p.)
Czyli jest to niemozliwe ?
komentarz 14 października 2015 przez Patrycjerz Mędrzec (192,320 p.)
Ale jaki to ma sens? Jeśli składowa nie jest statyczna, to jest związana tylko z obiektem, nie z klasą. Czy chodzi o to, że inicjalizujemy w taki sposób składowe dla wszystkich obiektów naraz?
komentarz 14 października 2015 przez maly Nałogowiec (37,190 p.)

Efekt w zasadzie jest taki sam jakbyś zainicjował tablicę w konstruktorze stałym rozmiarem, a czy taki sposób ma sens to niewiem poprostu jest taka możliwość.

struct Tablica
{
	int *buff = new int[666];
};
struct Tablica
{
	Tablica()
	:buff(new int[666])
	{
	}
	int *buff;
};

 

–1 głos
odpowiedź 14 października 2015 przez Danieter77 Bywalec (2,470 p.)
Ty jako dostep funkcjo public no wykorzystaj funkcje z cout

Podobne pytania

0 głosów
2 odpowiedzi 390 wizyt
pytanie zadane 13 maja 2015 w C i C++ przez Ins0mniaC Obywatel (1,400 p.)
0 głosów
1 odpowiedź 673 wizyt
pytanie zadane 30 września 2015 w C i C++ przez broda Początkujący (380 p.)
0 głosów
1 odpowiedź 322 wizyt

93,777 zapytań

142,736 odpowiedzi

323,388 komentarzy

63,381 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...