Aktywne Wpisy
dziobnij2 +177
Jak ognia piekielnego unikam wszelkich dawnych znajomych ze szkoły. Nie spotkałem żadnego od dłuższego czasu, ale gdybym spotkał jakąś znajomą twarz na spierdotripie, to natychmiast bym odwrócił głowię, przeszedł na drugą stronę ulicy i udawał, że nie widzę. Gdyby jakiś stary znajomy zagadał do mnie i się zapytał "co u mnie", albo "gdzie pracuję", to co mam mu odpowiedzieć? Że od skończenia liceum w 2009 roku siedzę w domu z rodzicami i
Ytarka +197
Ej, Miry, mam filozoficzne pytanie.
O co chodzi z tym fejsbukiem xD czy to statystycznie jest możliwe, żeby w tak dużej grupie użytkowników, prawdopodobieństwo przeczytania publicznego komentarza z sensem, poprzedzonego chociaż minimalną (ale taką niewątpliwą), próbą myślenia, praktycznie nie występowało? XDD wtf
I to nie że boomery, że janusze stare i stare Grażyny. Cały wiekowy przekrój najbardziej niedorobionej części społeczeństwa, serio.
Od
O co chodzi z tym fejsbukiem xD czy to statystycznie jest możliwe, żeby w tak dużej grupie użytkowników, prawdopodobieństwo przeczytania publicznego komentarza z sensem, poprzedzonego chociaż minimalną (ale taką niewątpliwą), próbą myślenia, praktycznie nie występowało? XDD wtf
I to nie że boomery, że janusze stare i stare Grażyny. Cały wiekowy przekrój najbardziej niedorobionej części społeczeństwa, serio.
Od
C++. Mam klasę, w której jednym z elementów oraz jednym z parametrów konstruktora jest tablica, dajmy na to:
class Foo { public: double m_array [4] (...) };
Foo::Foo (int spam, double bar [], int n=4) { ... }//n to rozmiar tablicy
I teraz pytanie czy jest taka możliwość, żeby podczas tworzenia obiektu tej klasy zainicjalizować tą tablicę (bar, której wartości chcę potem przypisać do marray) konkretnymi wartościami bez tworzenia przed tym wywołaniem innej tablicy elementów double? Prawdopodobnie odpowiedź jest banalnie prosta, ale tworząc obiekt choćby w ten sposób
Foo bar = Foo(12, {1,2,3,4})
kompilator nie chce mi tego przetrawić (jedynie tak jak pisałem wyżej, tworząc wcześniej tablicę 4-el double i przekazując jej adres w miejscu
{1,2,3,4}
więc gdzieś musi być błąd@Calvert: Użyj
std::array
, będziesz mógł zainicjalizować przez {} w parmetrzeDla uzupełnienia można dodać, że działa to także na tablicach typu
std::vector
, tyle że tam chyba wymagane jest, aby użytkownik przy inicjalizacji podał wszystkie wartości, które od niego wymagamy (tj. nie może podać 2 jeśli potrzebujemy 4, bo utworzy nam się tablica 2-elementowa zamiast tak jak w przypadku użyciaarray
4-elementowa, gdzie 2 będą miały wartości,initializer_list
, ale coś kombinuję. Próbuję skorzystać zinitializer_list
w przypadku gdy mam tablicęvector
jako składową klasy i listęinitializer_list
daję jako parametr konstruktora (wraz z domyślnymi wartościami), ale wychodzi na to samo co gdyby parametrem konstruktora była tablicavector
, bo gdy inicjalizuję obiekt liczbą argumentów mniejszą niż domyślna to lista, nie pozostawia mi tych pozostałych domyślnych wartości, a uwzględnia jedynie te,Dzięki!
@Calvert: Standardowe tablice to właśnie
std::array
, a tamte to jakiś anarchronizm ( ͡° ͜ʖ ͡°)Nie no zbijam się, ale w sumie to da się poprzez zmienna liczbę parametrów, dokładnie tak jak chcesz:
http://melpon.org/wandbox/permlink/E7mmuQhsCProMkKr
(void)spam;
- normalnie do tej pory spotkałem się z takim zastosowaniem nawiasów ( np.(int)
) przy rzutowaniu na jakiś typ - rzutowanie na void yyy bezsens (który działa! :D)?. (chyba, że ma to jedynie pokazać, że da się stosować w konstruktorze więcej niż jeden paramet przy inicjalizacji i nic więcej?).I druga rzecz,
Co do tej defaultowej wartości to o ile w konstruktorze z initializer_list będzie działać o tyle w tym pierwszym już nie bo ilość musi się zgadzać dokładnie, niby dało by się coś tam wymyślić na to ale nie będzie proste.
Ale jeżeli w domyślnym, pierwszym konstruktorze
foo (int spam, T... values) : mArray{values...}
w miejscevalues...
wstawię te same domyślne wartości tj.foo (int spam, T... values) : mArray{6,6,6,6}
to wtedy wszystko śmiga tak jak powinno, więc chyba jest okej ( http://melpon.org/wandbox/permlink/oDwMCprZS1ADCC8i )e:
Na marginesie przyznam jeszcze, że nie do końca rozumiem po co zastosowałeś tam w tym pierwszym konstruktorze
: m_Array
Dlaczego to jest ważne? Bo nie da się inaczej znacjonalizować obiektu const foo, co jest w sumie ważną sprawą.
Przy czterech elementach nie ma to sensu, łatwiej jest napisać 4 osobne konstruktory, ale przy N wartościach to już będzie kłopotliwe.
w takiej sytuacji template można wywalić wraz z values i wyniki są takie jakich oczekuję, więc co jest nie tak? ;D
http://melpon.org/wandbox/permlink/pFi687YGTcyMreGV