Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Szybkie konstruowanie obiektów będących składnikami klasy

Ostatnio zmodyfikowano 2016-12-14 18:09
Autor Wiadomość
latajacaryba
Temat założony przez niniejszego użytkownika
Szybkie konstruowanie obiektów będących składnikami klasy
» 2016-12-13 16:57:36
Witam. Jak wiemy, jeśli obiekt klasy A (nazwijmy go X) jest składnikiem klasy B, to taki obiekt X musimy konstruować na liście inicjalizacyjnej konstruktora klasy B.
C/C++
B::B()
    : //po dwukropku lista
{
    ;
}
A teraz 2 pytania:
1. co jeśli nie wiemy, ile obiektów klasy a chcemy mieć w klasie B. Np. klasa B to sklep - każdy sklep ma inną liczbę produktów.
2. Jeśli mamy takich obiektów w klasie B 20, a każdy z tych obiektów ma wiele składników (przykład):
C/C++
class A
{
    int a;
    int b;
    int c;
    float d;
    string f;
    string g;
}
class B
{
    A obiekt1;
    A obiekt2;
    A obiekt3;
    //...
    A obiekt20;
}

To co? Konstruktor w klasie B na 20(obiektów)*7(składników) = 140 zmiennych? Nie da się szybciej?

PS. Jeśli się da, proszę bez wektorów, kontenerów, funkcji wbudowanych, flag...
Z góry dzięki :)
P-154852
michal11
» 2016-12-13 17:13:16
Pro tip "talice".

wektorów, kontenerów, funkcji wbudowanych, flag
to po co to piszesz w c++? przesiądź się na jakiś język w którym będzie ci wygodniej pisać.
P-154856
pekfos
» 2016-12-13 17:37:21
Jak wiemy, jeśli obiekt klasy A (nazwijmy go X) jest składnikiem klasy B, to taki obiekt X musimy konstruować na liście inicjalizacyjnej konstruktora klasy B.
Musimy lub nie musimy.
P-154859
DejaVu
» 2016-12-13 17:41:47
PS. Jeśli się da, proszę bez wektorów, kontenerów, funkcji wbudowanych, flag...
Wskaźniki :) Obiekt niech powstaje dopiero wtedy gdy jest potrzeba jego użycia.
P-154860
latajacaryba
Temat założony przez niniejszego użytkownika
» 2016-12-13 17:42:28
@Michal
Rozumiem, że masz na myśli to, że składnikiem klasy B będzie tablica obiektów klasy A?
To są 2 problemy
-zajmuje miejsce
-jak skonstruować później taki obiekt?
" to po co to piszesz w c++? przesiądź się na jakiś język w którym będzie ci wygodniej pisać."
Nie uczyłem się o tym. Idę po kolei to co mam w książce, staram się być dokładnym, nie chcę skakać o 200 stron dalej by dowiedzieć się co to flaga.
P-154861
latajacaryba
Temat założony przez niniejszego użytkownika
» 2016-12-13 17:48:04
@Pekfos
Tzn. nie musimy, ale jak chcemy to tylko tam? Da się go skonstruować gdzie indziej?
@DejaVu
O tym nie pomyślałem ;)
Masz na myśli coś takiego :
C/C++
class Sklep
{
public:
    Ksiazka * wsk;
   
};
int main()
{
    Sklep naeba;
    naeba.wsk = new Ksiazka( /*konstruktor*/ );
   
}
P-154862
michal11
» 2016-12-13 17:53:10
Jak to skonstruować później? Z definicji konturujesz w konstruktorze później możesz tylko nadpisać lub zmodyfikować dany obiekt. Chyba, ze chcesz zrobić lazy initialization.
P-154863
latajacaryba
Temat założony przez niniejszego użytkownika
» 2016-12-13 18:03:04
@up
Pekfos w odpowiedzi na moje zdanie:
"Jak wiemy, jeśli obiekt klasy A (nazwijmy go X) jest składnikiem klasy B, to taki obiekt X musimy konstruować na liście inicjalizacyjnej konstruktora klasy B."
Napisał
"Musimy lub nie musimy."

Chodziło mu pewnie o to, że nie musimy konstruować tego obiektu. Ja jednak się zastanawiam, czy coś takiego w ogóle wchodzi w grę.
P-154865
« 1 » 2 3
  Strona 1 z 3 Następna strona