@Metoksyfenidyna9: Po prostu robisz to new w innym wątku niż ten, w którym stworzyłeś this, którego przekazujesz jako rodzic do QSqlTableModel. Ponieważ QObject potrzebuje być na jakiś wątku, by odbierać zakolejkowane sygnały, przypisuje mu się obecne. Jednak ze względu na sposób usuwania dzieci rodziców, wątek rodzica musi być taki sam. U ciebie widocznie okno tworzysz w innym wątku niż główny wątek GUI.
  • Odpowiedz
Hej bawię się w GUI QT i mam taką sytuację z pytankiem!

Posiadam dwa buttony (ui.addButton/ui.sumButton), chciałbym aby obydwa kierowały do tej samej funkcji getAndshowResult() jednakże z tym, aby każde z nich dodawało "od siebie" argument najlepiej znak '+'/'-' i na podstawie tego znaku wywoływana była dalsza część funkcji. Jednakże żaden ze sposobów mi nie zadziałał.

Pomyślałem o takim rozwiązaniu -> https://pastebin.com/Uq1vZXRg ale NIE działa (cptn Obvious), jakieś pomysły?

#glupiepytaniametoksyfenidyny
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Metoksyfenidyna9: Zazwyczaj nie musisz tego robić, bo się automatycznie usuwać, gdy jeden z obiektów połączenia się usunie. Tutaj ui->sumButton raczej nie będzie obsługiwać wciśnięć dłużej niż życie this, czyli zgaduje, że twojego okna.
Jednak gdy masz w lambdzie jakiś inny obiekt, który zostanie zniszczony, to trzeba usunać też połączenie:

QMetaObject::Connection connection = connect(ui.sumButton, &QPushButton::clicked,

                                       [my_qobject]()
  • Odpowiedz
Macie coś dobrego do nauki tworzenia projektu?
W sensie, mam pomysł super. Jednak szukam, jakiejś pomocy odnoście "projektowania" tego pomysłu (schematy, UML, dokumentacja). Jest coś fajnego co pomoże mi to wszystko ogarnąć od początku do końca (przeprowadzi za rączkę - najlepiej, albo da pewne wytyczne).
Mocno też zależy mi na poradach odnośnie projektowania tego mojego pomysłu (jak za to zabrać się, na co zwracać uwagę, itp.) anyone?
( ͡° ͜ʖ
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Hej, wiem że pewnie dla was debilne pytanie, ale...

Zakładając że chcialbym, aby mój projekt w C++ korzystał z uroków bazy danych (nie ładował całego pliku, uproszczone wyciąganie danych itp.) to jak wyglądają moje opcje? Na myśl przychodzą mi tylko takie:

1. Server bazodanowy w necie i łączenie do niego
2. Instalacja serwera bazodanowego wraz z programem, aby ten mógł z niego korzystać?
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Metoksyfenidyna9: Kiedyś wielowątkowość, ale jak teraz są takie super biblioteki jak std::future to ez sprawa.
W sumie to sprowadza się do jednego UB. Takie rozróżnianie czy kod powoduje UB czy nie to jak problem NP trudny.
Pomijając to, to chyba najgorsze zostało dedukowanie parametrów szablonu oraz całe SFINAE.
  • Odpowiedz
@marcineckixx: Jeździsz na jakieś konferencje gdzie słuchasz o nowościach, template metaprogramming, rozmyślasz nad jakimiś abstrakcjami, w pracy utrzymujesz jakiś system napisany w C++ 98 (albo jeszcze lepiej, w części C++ wspieranej przez jakiś dziki kompilator z disclaimerami w stylu "nie używamy STL, bo nasze środowisko ma ch** implementację") przez programistów C którzy przeczytali jakąś książkę o obiektowości, a zarabiasz mniej niż gdybyś walił CRUDy w Springu ( ͡° ͜
  • Odpowiedz
@Metoksyfenidyna9: Ten 3 sposób jest prostszy w wytłumaczeniu. Działa tylko przy założeniu, że tablica jest posortowana. Bierzesz pierwszy i ostatni element, jeżeli suma jest za duża, to odrzucasz ten większy na końcu, jeżeli za mała, to ten mniejszy na początku i tak lecisz, dopóki nie znajdziesz szukanej sumy lub nie zostanie ci jeden element.
Co do 2 to musisz wiedzieć, co to jest wyszukiwanie binarne. Więc bierzesz pierwszy element i
  • Odpowiedz
Hej, takie szybkie pytanko ;)
Kombinuję w jaki sposób mogę użyć funktora aby policzyć ilość liter w stringu. Utknąłem w takim momencie. Ktoś pomoże, rozjaśni czy dobrze kombinuję?

Wiem, że ostatni argument count_if powinien być wywołany inaczej to na pewno.
W jaki sposób ma być wywołany, i czy jako argument ma może przyjmować zadeklarowany wskaźnik do iteratora?

https://pastebin.com/c67RcKwN
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Metoksyfenidyna9: Stwórz obiekt tej struktury ischar i ten obiekt podaj jako ostatni argument w count_if. Poza tym w tych wszystkich funkcjach z argument powinno się rzutować na unsigned char żeby uniknąć UB.
  • Odpowiedz
cpp.sh/2ubfbl


@Metoksyfenidyna9: elementy w std::set są posortowane według operatora<, w przypadku std::string jest to porządek leksykograficzny https://pl.wikipedia.org/wiki/Porz%C4%85dek_leksykograficzny . Set przydaję się, gdy nie chcesz duplikatów oraz, gdy nie obchodzi cię porządek w jakim elementy są wkładane. Inne zastosowana to szybkie wyszukanie elementu/sprawdzenie czy istnieje (log N, w zwykłym nieposortowanym wektorze jest to N). Inny ficzer: set posiada metodę count, która mówi ile razy wsadziłeś ten sam element, co może byc
  • Odpowiedz
set posiada metodę count, która mówi ile razy wsadziłeś ten sam element, co może byc przydatne, jak chcesz licznik


@Saly: objection, w secie count zwraca tylko 1(jak jest) i 0(jak nie ma)

dla takiego licznika używa się std::map z operatorem []++
  • Odpowiedz
@JakTamCoTam: tak chcę bez inicjalizacji nowego obiektu Konto, móc wypisać imie i nazwisko wlasciciela KOnto Plus. Czy to możliwe w ogóle przy takim zapisie? , bo nie chce mi się tyle scrollować do nauki

//edit
Zmienić zmienne klasy bazowej z private na protected?
  • Odpowiedz
Mam problem z wyobrażeniem sobie jakie powinny być klasy w przykładowym programie chociażby do obsługi turniejów bilardowych czyli tworzenie meczy, turniejów, ranking zawodnikow, statystyki wygranych przegranych itp itd.
Czy znacie przykłady z jakich klas tworzone są programy i jak się łączą?
#naukaprogramowania #programowanie #cpp #glupiepytaniametoksyfenidyny
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@kebab-case: Typowy błąd programisty w pierwszej fazie fascynacji wzorcami obiektowymi. Sranie wszędzie abstrakcyjnymi fabrykami i strategiami. A potem i tak się okazuje, że to, co miało się zmieniać razem - zmienia się oddzielnie, a to, co miało być od siebie niezależne - musi teraz być zależne. I zamiast skasować 10-linijkowego if-then-else, którego możesz przeczytać i zrozumieć w całości w 5 minut, i napisać innego, którego też możesz zrozumieć w całości
  • Odpowiedz
@kebab-case: widzisz, to są problemy do rozwiązania. Niektóre z nich wymagają wzorców. Większość nie :)

Np. sensowna implementacja sortowania nie wymaga wzorca strategii, tylko lambd (funkcji anonimowych, domknięć, jak zwał, tak zwał). Nawet powiedziałbym, że stosowanie wzorca strategii w tym przypadku to błąd.

Wzorzec strategii to zwykle rozwiązanie problemu domknięć w języku programowania. Ale w c++ już są, więc wzorzec strategii powoli odchodzi do
  • Odpowiedz
Jak co wieczór #glupiepytaniametoksyfenidyny ( ͡° ͜ʖ ͡°)

Chciałbym przypisać wskaźnik do adresu podanego przeze mnie. Gdzie mogę znaleźć/ustawić zakres pamięci na jakiej ten program będzie operował? Konkretnie chodzi mi o podgląd na żywca w debugerze jak ten kod będzie śmigać ( ͡° ͜ʖ
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Metoksyfenidyna9: z punktu widzenia standardu, zapisywanie do losowej pamięci to Undefined Behaviour.

Żeby uzyskać pamięć od systemu operacyjnego, używasz operatora new lub innej alokacji pamięci.

Dostęp do pamięci nie należącej do procesu kończy się segfaultem.
  • Odpowiedz
Jaka jest różnica dla konstruktora klasy w C++ czy przekaże mu dane przez referencję czy przez wartość?


@Metoksyfenidyna9: taka sama jak w każdej innej funkcji lub metodzie ¯\_(ツ)_/¯

Czy działanie destruktora opisuję tylko gdy stricte zwracam się w konstruktorze o przydzielenie pamięci chociażby przez new?


@Metoksyfenidyna9: w destruktorze klasa powinna zwolnić zasoby które wcześniej pozyskała, czyli np.: zaalokowaną pamięć, otworzone pliki, zablokowane mutexy itd. To oczywiście kwestia konwencji,
  • Odpowiedz
Czym mogę podglądnąć "na żywo" zmiany zachodzące w pamięci? Przy inicjalizacji itp zmiennych, takie podstawy.


@Metoksyfenidyna9: najprosciej chyba dowolnym debuggerem. Nic innego nie przychodzi mi do glowy
  • Odpowiedz
@Metoksyfenidyna9: Ach, czyli instance.

Różnica jest prosta - konkretyzacja to utworzenie funkcji lub typu odpowiadającego zdefiniowanym metatypom. Jest to najczęściej automatyczne i dokonuje tego kompilator, ale można to wymusić jak w przypadku w książce. Dla przykładu, kompilowanie dużych bibliotek jest szablonów jest czasochłonne i w bibliotekach numerycznych dokonuje się konkretyzacji wprost dla typów zmiennoprzecinkowych, gdyż nikt nigdy nie będzie stosować tego dla innych typów.
Krótko: z szablonu tworzysz nowy
  • Odpowiedz
@Metoksyfenidyna9:
1. w przypadku double, lepiej zawsze przez wartość. ale jak masz jakiś duży obiekt, to lepiej przez referencję dowiadywać się o jego stanie (const Object& obj), bo wtedy nie zachodzi potrzeba kopiowania go całego. chyba, że chcesz jakoś zaznaczyć, że ten double może być opcjonalny(chociaż pointer to nie najlepszy pomysł).

2. struct to to samo co class, tylko ma domyślnie publiczne dziedziczenie i domyślny publiczny dostęp do składowych
  • Odpowiedz