#cpp
Czy można stworzyć klasę konkretną dziedziczącą po klasie abstrakcyjnej, która nie posiada implementacji, którejś z funkcji wirtualnej klasy bazowej, czy jest to bezwzględnie zabronione?
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Hej, napisałem sobie liba do fiberów i nonblocking IO, można pisać w C lub C++ tak jak w Go: libfev

Zrobiłem też kilka benchmarków i w ten lib daje radę zrobić w jednym benchmarku 172% więcej requestów/s niż Boost.ASIO, 77% więcej niż Tokio (rust), 40% więcej niż async-std (rust) i 16% więcej niż Go: async-bench

#programowanie #cpp #rustlang #golang
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Po całym dniu szukania znalazłem błąd - zamiast 1 powinno być 0 w create endorsement. Wreszcie działa przykład tworzenia transakcji z wykorzystaniem libbitcoin i zapisywaniem danych przez OP_RETURN :D
Kod https://github.com/pantadeusz/bitcoin-experiments/tree/master/op_return_cpp_nodejs
Transakcja https://live.blockcypher.com/btc-testnet/tx/279497594bb14d778d1248ecd63f3b1014fd1cd2af3cfefc852bdc248617819f/
#bitcoin #cpp
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

C++ jest zarąbiste.

Jest sobie pewne API, które implementuje własną klasę Unicode'owych stringów (no ok, zdarza się...).
I te stringi mają funkcję .ToUStr(), która daje dostęp do bufora 16-bitowych znaków dzięki niejawnej konwersji na const unsigned short*.
Napisałem funkcję, która ma przyjmować bufor znaków i chcę ją wywołać przez Funkcja(string.ToUstr()), a dla wygody zrobiłem typedefa i teraz następuje najlepsze:
- jak zrobię typedef unsigned short* Ptr; i potem Funkcja(const Ptr ptr) { }
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@MostlyRenegade: jest prosta zasada. Const aplikuje się do tego co jest po lewej, chyba, że nic nie ma po lewej to wtedy do tego co jest po prawej.

const short* -> zmienny wskaznik na stałą
short const* -> to samo, to tak zwany "east-const",przez niektórych uważany za jedyny słuszny zapis, bo działa logicznie z zasadą "to co po lewej stronie"
short * const -> stały wskaznik na zmienną
short const * const -> stały
  • Odpowiedz
@VanQator: nie wiem czemu ma służyć ten cudak i po co się to stosuje bo nie wgłębiałem się nigdy za bardzo w programowanie obiektowe za to wgłębiałem się w sam język programowania i wydaje mi się, że w GetProduct() masz memory leak. ja wiem ze to tylko przykład ale warto wyrobić jakieś nawyki ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@zwei: Widziałem to już wcześniej i próbowałem. Z musi być wyzerowane, bo nie wiem co za śmieci dostaję z zewnątrz. Są jakieś bardziej eleganckie metody?
Segfaulty wyrzuca dopiero przy którymś kolejnym teście. Jeśli masz błąd już w pierwszym z nich to dalsze nie są przeprowadzane i dlatego nie pojawia się segfault ;)
  • Odpowiedz
Z musi być wyzerowane, bo nie wiem co za śmieci dostaję z zewnątrz. Są jakieś bardziej eleganckie metody?


No tak, ja zmieniam z na 1 na samym końcu przed returnem jeśli jest 0.

Jeśli masz błąd już w pierwszym z nich to dalsze nie są przeprowadzane i dlatego nie pojawia się segfault ;)


@TheCao: no to wykluczyłem wstawiając 1 tylko wtedy, gdy z wychodzi na końcu 0. Z tym że
  • Odpowiedz
Jaki początkujący kurs nauki języka C++ polecacie?
Kiedyś trochę liznąłem ze strony cpp0x.pl i było spoko, ale nie wiem czy ten kurs nie jest już przestarzały. Odnośnie Mirosława Zelenta to z tego co wiem, uczy on złych nawyków, także wolałbym nie.
#cpp #cpp0x #programowanie #naukaprogramowania
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@erdwa: a musi być c++? Pracuję pisząc w tym języku i nie polecam. Ja uczyłem się z "Symfonia C++", ale nie poleciłbym nikomu tej książki
  • Odpowiedz
@erdwa: skomplikowany język, bardzo duży bagaż naleciałości, łatwo sobie strzelić w stopę. Od strony developera to bardzo słaby tooling w postaci IDE/systemów budowania/zarządania zależnościami. Oczywiście C++ ma swoje zastosowania, ale jeśli dopiero uczysz się programowania to lepiej wybrać coś innego. Osobiście poleciłbym Pythona (popularny, prosty, ma swoją niszę w data science), JS (tego języka możesz użyć do dosłownie każdego zadania), ewentualnie Java/C# (jak chcesz robić duże systemy w korpo).
  • Odpowiedz
#cpp
Czy warto uczyć się frameworków jak QT, SFML, czy raczej niskopoziomych bibliotek jak winapi czy opengl?
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@VanQator: SFML jest raczej nastawiony do 2D, lepszy od niego wydaje mi się być SDL2 - bardziej uniwersalny, ale więcej musisz zrobić sam.
OpenGLa warto przynajmniej poznać, żeby w razie potrzeby dodania jakiegoś fajnego efektu wiedzieć że da się to zrobić.
  • Odpowiedz
Czy da się 'wstrzyknąć' spreparowany pakiet tcp do istniejącego połączenia i wysłać go do zdalnego hosta?
Na windowsie jeżeli proces ustanowił połączenie, a ja chcę z innego procesu przechwytywać komunikację, a czasami dodać do niej coś od siebie, to jednym z rozwiązań mogłoby być jakieś lokalne proxy. Drugie wyjście to DLL injection, które podmieniłoby mi wskaźniki send(), recv() itd... z API winsock2 na odpowiedniki z mojej biblioteki. Ale czy nie dałoby
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@PeeM69: c++ to syf, jesli chodzi o biblioteki: jak nie wiesz jak wszystko działa pod spodem to można tylko płakać, jak coś się wgra i nie działa. Najprościej jest użyć jakieś biblioteki header-only: google po wpisaniu "cpp fft header only" poleciło mi to https://github.com/jdupuy/dj_fft . Tylko pamiętaj, że jak używasz takich bibliotek to musisz pamiętać o włączonych optymalizacjach "g++ -O3", inaczej twój kod może być za wolny
  • Odpowiedz
dzielę sobie moją programistyczną sieczkę na biblioteki żeby mi było łatwiej używać i żeby się nie przejmować zależnościami więc wymyśliłem sobie taki system który podpatrzyłem na jednym wykładzie z Visual C++ gdzieśtam, kiedyśtam i mi się spodobał. No i chyba coś źle robię, bo wyskakuje mi, że mój enum "was not declared in this scope" mimo, że podświetlanie go widzi. Jak na obrazku, od napisu START wskazuję, że dostęp do definicji enuma
s_theCapt - dzielę sobie moją programistyczną sieczkę na biblioteki żeby mi było łatw...

źródło: comment_1597480364Ou05r1sVPxnkb11BSQ23w2.jpg

Pobierz
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@s_theCapt: nie widzę na pierwszy rzut oka co jest źle, ale dobrą praktyką jest właśnie includowanie bezpośrednio i nie poleganiu na tym, że inny header coś includuje.
ifndefy/pragma once cię bronią przed redeklaracją, a header/source jest wtedy samokompilowalny. załóżmy, że gdzieś na wysokim poziomie były używany vector w headerze i korzystało z niego 400 plików. zmieniamy implementację na listę, ruszamy tylko swoją działkę w kodzie, a wywala się 400 plików,
  • Odpowiedz