Czy jest możliwość stworzenia w #cpp zmiennej pod jakimś warunkiem już w czasie wykonywania programu? Mam klasę Box i chcę żeby zawierała ona dodatkową zmienną int tylko, jeśli wcześniej spełnione zostało jakieś założenie.
@Yahoo_: Chciałbym aby rozmiar obiektu Box nie był większy o te 4 bajty jeśli nie byłoby potrzeby. Teraz tak myśle, że może zamiast tego kasować zmienną jeśli nie będzie potrzebna.
@Atraktor: Kombinujesz. 4 bajty raczej Cię nie zbawią. A jak zbawią, to zamień inta na wskaźnik. No i... jaki jest ogólny cel takiego zachowania? Co chcesz osiągnąć w szerszym ujęciu?
@Atraktor: najprosciej jest stworzyc pusty wskaznik, i gdy zostaje spelniony warunek przypisac adres z wartoscia, tylko nie zapomnij wyczyscic dane gdzie prowadzi wskaznik, bo bedziesz mial wyciek, a to nic dobrego,
@psychob: Zastanawiałem się po prostu, czy dałoby się napisać taki odpowiednik taśmy z paczkami, która by je dzieliła wg wagi - czyli rozdzielać kolejne obiekty Box z tablicy za pomocą samego sizeof ;)
@I-_-I: no nie będzie miał tych 4 bajtów zaalokowanych na starcie. IMO to i tak bez sensu pomysł, bo mikrooptymalizacja ssie, ale pytał o rozwiązanie, to dostał :)
@Atraktor: zal ci dodatkowych 4 bajtow na id? po za tym jezeli bedziesz kombinowal jak to zrobic przy pomocy sizeof() to sam program zajmie ci wiecej niz chciales zaoszczedzic i do tego na pewno jakies mial bugi
@Atraktor: Sapiecie się o te 4B jak o perma dla cauki zamiast wytłumaczyć. Jak deklarujesz zmienne w kodzie to ido one na stos i miejsce dla nich jest rezerwowane. Dynamicznie alokowana pamięć leci na stertę. Czasami kompilator stwierdza że nigdy nie wykona się jakaś część kodu i optymalizuje np.
if (0) {
int dupa = 8;
}
Pewnie zignoruje "dupa" i nie zrobi miejsca na stosie.
@Atraktor: jaki problem napisać jedną metodę dla klasy Box, która uprości cały Twój problem? Będąc upierdliwym można spytać: czym jest "sizeof" w kontekście tego Boksa? [Szerokość x wysokość x głębokość] czy sama [masa]?
Dziwi mnie to, że zamiast tworzyć możliwie abstrakcyjne i poprawne rozwiązanie, to skupiasz się na wykorzystaniu funkcji "sizeof", która Tobie nie jest w ogóle potrzebna a i dodatkowo komplikuje zadanie.
@bolinoga: @Atraktor: dokładnie tak, zrób to na odpowiednim poziomie abstrakcji i jeśli klasa Box ma reprezentować fizyczne pudło, to wewnątrz powinna mieć pole np.
int masa i tym powinieneś operować w kodzie. Na dobrym modelowaniu zagadnienia na pewno lepiej wyjdziesz niż na optymalizacjach i podejściu do programowania z lat '90.
#programowanie
@Atraktor: Wydajesz się przekomponowywać. Co konkretnie chcesz zrobić (a raczej dlaczego)?
if (0) {
int dupa = 8;
}
Pewnie zignoruje "dupa" i nie zrobi miejsca na stosie.
Dziwi mnie to, że zamiast tworzyć możliwie abstrakcyjne i poprawne rozwiązanie, to skupiasz się na wykorzystaniu funkcji "sizeof", która Tobie nie jest w ogóle potrzebna a i dodatkowo komplikuje zadanie.
int masa
i tym powinieneś operować w kodzie. Na dobrym modelowaniu zagadnienia na pewno lepiej wyjdziesz niż na optymalizacjach i podejściu do programowania z lat '90.