Polecacie jakieś debuggery do C++ na systemie Linux? Czy warto używać gdb z GCC? Nie jest to graficzny debugger i nie da się tam breakpointów robić.

#programowanie #cpp
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@MrBanana programistą. Teraz mam na jednym monitorze IDE (oczywiście z vimpluginem ( ͡° ͜ʖ ͡°)), na drugim przeglądarkę z wypokiem i dokumentacją, i terminal pod F12 dostępny w każdym momencie do np. kompilacji
  • Odpowiedz
Witam, mam taki kod: https://pastebin.com/k7cKjy8r
W pewnym przypadku ma on wyświetlić okno dialogowe i ustawić zaznaczenie elementu, gdy to okno się zamknie lub, gdy się wybierze cancel. Jednak setCurrentItem powoduje ponowne wywołanie onlistWidgetNotescurrentItemChanged czego efektem jest ciągłe ponowne pojawianie się okna dialogowego po jego zamknięciu. Użycie blockSignals sprawia, że problem znika, ale zaznaczenie nie wraca na poprzedni element. Próbowałem wielu innych rozwiązań np. użycie zmiennej przechowującej informację o tym czy
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@lionbest: Tzn. mam zrobić pole klasy głównego okna typu QListWidgetItem*, przy każdej zmianie focusa zapisać kopię zmiennej QListWidgetItem *current do tego pola i, gdy zmieni się focus pokazać okno, gdy tak kopia będzie taka sama jak zmienna QListWidgetItem *previous?
  • Odpowiedz
@arkadiusz97:

rzy każdej zmianie focusa zapisać kopię zmiennej QListWidgetItem *current do tego pola

Nie, tylko wtedy kiedy faktycznie chcesz zmienić element na ten w current.

gdy zmieni się focus pokazać okno, gdy tak kopia będzie taka sama jak
  • Odpowiedz
#cpp #qt #debian #linux

Parę dni temu był tutaj osobny post na temat problemu z QtSerialPort. Mam podobny problem, z tym że u mnie moduł jest wykryty kompilując z Ubuntu na Ubuntu. Kompilując (skrośnie/cross) na Raspbiana, moduł jest nieznany...

Na Raspbianie próbowałem go zainstalować tymi samymi komendami co na Ubuntu (na Ubuntu to wystarczyło). Nic.
Próbowałem też ręcznie przenosić pliki do folderu lib i include w /usr/local/qt5pi
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@TheDoom: dla potomnych z tym samym problemem, wszystkie komendy przeprowadza się na Ubuntu a nie na Pi:
1. pobrać (np. z Gita) bibliotekę, QtSerialPort w tym przypadku - komendą git clone, ofc.
2. wejść do folderu z biblioteką w terminalu - cd , czyli cd qtserialport.
3. /raspi/qt5/bin/qmake . LUB /usr/local/qt5pi/bin/qmake . - kropki są ważne!
4. make
5. sudo make install
6. gratulacje, biblioteka zainstalowana i zdeployowana na Raspberry,
  • Odpowiedz
Mam sobie programik który ma mi wyrzucić ostatnią cyfrę 2^n.
Przykładowo podając 5, ma mi wypluć nie 32 tylko samo 2.

Problem jest taki, że strona solve.edu.pl nie przyjmuje mi tego rozwiązania bo 'czas wykonywania jest za długi'.
https://pastebin.com/aQxcgNC5

Wcześniej
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Wzorzec odwiedzającego zaimplementowany za pomocą listy typów. Proszę o jakiś przykład najprostszy, wskazówkę, jak się za to zabrać, bo mam ochotę sobie wydłubać mózg już. :/

#cpp11 #cpp
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@zwei: daj znać jak się dowiesz, też jestem ciekaw. Jedyne co mi przychodzi do głowy co pasuje do "listy typów" to variant+visit()/apply_visitor(), ale to znowu słabo do wzorca się odnosi imo
  • Odpowiedz
Treść przeznaczona dla osób powyżej 18 roku życia...
  • 18
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Khaine: :D niestety ale tego często uczą na studiach i tak potem zostaje to wykorzystane w pracy. A wystarczy takie ładne stwierdzenie, "composition over inheritance" ( ͡° ͜ʖ ͡°).
  • Odpowiedz
Mirki, pomożecie?
Wyjaśni ktoś jak skompilować projekt w cpp z użyciem biblioteki graficznej sfml, tak żeby możliwe było odpalenie programu z pliku exe?
Program odpala się bez problemu z poziomu kompilatora ( C::B , nie hejtujcie,to nie mój projekt ), jednak odpalanie z .exe wywalą błędy (patrz obrazek). Wszystkie dll są w katalogach z plikami wykonywalnymi, a projekt jest przygotowany zgodnie ze instrukcją ze strony: cpp0x.pl

#programowanie #cpp
Cerini - Mirki, pomożecie?
Wyjaśni ktoś jak skompilować projekt w cpp z użyciem bibl...

źródło: comment_HEwiq2sdGDPKm4ep2yqGx7ZwKnNzifQ4.jpg

Pobierz
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Cerini: Nie masz bibliotek kompilatora w PATH, albo skopiuj odpowiednie libki do katalogu programu albo dodaj je do PATH. Nazwę masz w komunikacie błędu.
  • Odpowiedz
@KrzaQ2: wydaje mi się, że problem jest inny. Gdyby brakowało libki, to byłby taki wlasnie błąd. Tutaj bym obstawiał przemieszanie Release/Debug.
@Cerini: upewnij się, że dllki, jak i exec są zbudowane jako ten sam typ. Także się upewnij, czy nie masz kilku wersji tej samej dllki i czy rzeczona funkcja w danej jest (można sprawdzić Dependency Walkerem)
  • Odpowiedz
#cpp czy #python dla chcącego nauczyć się?
Zawodowo zajmuję się programowaniem PLC, chciałbym poszerzyć swój warsztat, o jakiś język programowania.
Pomysłów mam całą głowę. Docelowo pewnie dla zabawy chciałbym postawić swój własny smart home, albo nawet jeżeli nie, to smart room.
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mam klasę reprezentującą liczbę zespoloną (complex0). Zadanie polega na pobraniu liczby od użytkownika i poprzez przeładowanie operatorów wykonanie kilku obliczeń. Gdy wynik jet wyświetlany w tej formie:

std::cout << "complex0 conjugate is " << ~c << std::endl;
to wynik jest błędny (1.2458e-306). Liczba ta występuje dla pozostałych działań na obiekcie.
Gdy zostanie wykonany cast na rezultacie, to wyświetlany jest poprawny wynik:

std::cout
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Meownacci: ach racja, w momencie zakończenia funkcji zmienna przestaje istnieć. Usunięcie referencji załatwiło problem.
@KrzaQ2: wiem że jest do tego już gotowa biblioteka, ale ćwiczenie wymagało ode mnie napisania samemu. ~ w tym wariancie miało być sprzężeniem.
Dzięki za pomoc
  • Odpowiedz
Czołem Mircy z #naukaprogramowania
Siedzę w IT od ponad 2 lat. Głównie jako #cplusplus ale niestety w pierwszej pracy programowania było jak na lekarstwo (i niestety bezmyślnie się tam zasiedziałem). Niedawno postanowilem zmienić firmę i jest trochę lepiej. Jednak wychodzą moje braki. Podstawy #cpp jako takie mam. Brakuje mi jednak usystematyzowania zdobytej już wiedzy (nie tylko w zakresie samego języka ale i ogólnych zagadnień z programowania:
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Saly: Dobra, ogólnie wielkie dzięki mirku () Wesołego sylwka czy coś ( ͡° ͜ʖ ͡°)( ͡° ͜ʖ ͡°)

Wykop zawsze pomoże, wykop stronk ( ͡º ͜ʖ͡º) Jeszcze raz dzięki.
  • Odpowiedz
Jeśli mówimy o standardowych implementacjach C++ to int jest najczęściej 32 bitowy. By bezpiecznie wykorzystywać 64bitowe liczby całkowite korzystaj z long'a. Dla uproszczenia załóżmy, że bajt ma zawsze 8 bitów, dzięki czemu wiesz, że chcesz odczytywać po 64/8 = 8 bajtów z pliku i zapisywać je do long'a. To można zrobić na wiele sposobów, jednym z nich jest ten zaprezentowany przez @MamCieNaHita.
  • Odpowiedz
By bezpiecznie wykorzystywać 64bitowe liczby całkowite korzystaj z long'a


@podstawczak: Nie wydaje mi się, by była to prawda. Long w standardzie ma jedynie "przynajmniej 32 bity". "Long long" ma "przynajmniej 64 bity". A najbezpieczniej będzie użyć int64_t który ma dokładnie 64-bity.

@CichyGlosZTyluGlowy: Dwa dni temu robiłem coś podobnego i nie znalazłem sposobu żeby odczytać od razu dwa bajty do int16_t (przy użyciu strumieni), więc odczytałem 2 bajty do
  • Odpowiedz
@arkadiusz97: sygnałami?

w momencie tworzenia oknaY robisz connecta między sygnałami oknaY i slotami w dzieciach oknaX. OknoY łączy sygnały swoich dzieci z sygnałami wysyłąnymi przez same oknoY. OknoX w slotach robi co trzeba. Na usunięcie oknaY najpierw rozłączasz oknoY i oknoY. Coś w tym stylu:

dzieciOknaX <-connect-> oknoX <- connect na czas istnienia oknaY -> oknoY <-connect-> dzieciOknaY

Można też inaczej (np przekazując w konstruktorze oknaY referencję do oknaX), ale
  • Odpowiedz