@TurkusowyRisso: A ja w sumie nie, bo pierwsze słyszę, że ktoś tak to myląco nazywa. Globalne deklaracje to zadeklarowane w globalnej przestrzeni nazw. Natomiast lokalne zmienne czy klasy to takie zadeklarowane w przestrzeni funkcji. Tutaj jedynie można zadeklarować operator w nazwanej przestrzeni nazw i ma znaczenie czy będzie on w tej samej co klasa, jeżeli tak to będzie on widoczny globalnie poprzez mechanizm ADL.
Natomiast operator też może być zadeklarowany jako członek klasy, wtedy pierwszy z argumentów jest przekazywany jako this i wydaje mi się, że o taką różnicę pytasz.

Pomijając cztery operatory (=,[],(),->), które muszą być zadeklarowane jako członek klasy, to są tylko dwie znaczące sprawy.

Pierwszą jest dostęp do zmiennych prywatnych. Operator zadeklarowany jako członek klasy ma do nich dostęp, operator poza klasą, który nie jest zadeklarowany jako przyjaciel, nie ma dostępu. Jednak można nie tylko zadeklarować, ale i podać całą definicję operatora
  • Odpowiedz
Mirki i Mirabelki z #wroclaw, którzy interesują się #cpp, ze szczególnym uwzględnieniem #cpp11, #cpp14 i #cpp17 - będę prowadził mini kurs C++ ze złożoności obliczeniowej i biblioteki STL. Jeśli chcecie poszerzyć waszą znajomość C++, bo np. chcielibyście pracować jako programiści C++ to gorąco zachęcam. Tylko 3 lekcje po 5 godzin + prace domowe i projekt (opcjonalnie). Nielimitowane konsultacje online.
LordLukin - Mirki i Mirabelki z #wroclaw, którzy interesują się #cpp, ze szczególnym ...

źródło: comment_3M4SXCfoNQcZM0UefSrxObn9EaC7Koih.jpg

Pobierz
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#cpp #cpp11 #programowanie #kompikownia
Witajcie :) Słyszeliście o tzw. wyrażeniach lambda? Nie? To dobrze, bo właśnie teraz masz okazję je poznać :)
Zapraszam do lektury mojego najnowszego wpisu poświęconego wyrażeniom lambda.
https://www.kompikownia.pl/index.php/2018/12/15/wyrazenia-lambda-uzyteczna-nowosc-c11/
Jeśli ci się podobało, nie zapomnij o like'u na moim fanpage.
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#cpp #cpp11
Możecie mi polecić jakieś środowisko do pisania w c++ pod linuksa, żeby uwzględniało c++11 w szczególności sharedptr? Przykładowo mam jakiś sharedptr do obiektu, robię sobie do niego kropkę i... nic. Powinno samo zamienić mi na -> i pokazać dostępne metody.
Jak już napiszę takie coś z ręki, kliknę z ctrl na metodę i nie przenosi mnie do implementacji. ( ͡° ʖ̯ ͡
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Właśnie udostępniłem oprogramowanie do sterowania frezarką CNC o nazwie Frezia bezpośrednio z poziomu Raspberry Pi.

Repozytorium github https://github.com/pantadeusz/raspigcd
Wideo z działania https://youtu.be/KTBCnEE6s4s

Oprogramowanie akceptuje uproszczony G-CODE i emituje sygnały na piny Raspberry za pomocą bezpośredniego dostępu do rejestrów. Wyróżnia się tym, że nie wymaga dodatkowego mikrokontrolera typu Arduino (czy innych wynalazków z którymi należy się komunikować przez USB/UART/LPT).
  • 10
  • 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
@xaoc 1 imo przedobrzył. Wystarczyło zrobić kopię obiektu i ją zwrócić. Niczego tym nie zyskał (dalej wymaga copy constuctable). Zresztą - dlaczego miałoby tu być race cond? Można 2x zpopować element?
  • Odpowiedz
Mam klasę abstrakcyjną Blob z funkcjami wirtualnymi Blob::fromArray(const QByteArray& raw) i Blob::toByteArray()->QByteArray. Weźmy jej klasę pochodną, Matrix; przeciążyłem operatory QDataStream w taki sposób:

QDataStream& operator<<(QDataStream& stream, const Matrix& in) {
stream << in.toArray();
}
QDataStream& operator>>(QDataStream& stream, Matrix& out) {
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mam taką sytuację (bez strachu, kilka linijek tam jest i proste ale na Wykopie mało przejrzyście): http://pastebin.com/U5B9NTd1

No i teraz:
1) Czy usunięcie MyClassB spowoduje wywołanie tak destruktora MyClassB, jak i MyClass czy muszę się jakoś odwołać z destruktora MyClassB do MyClass, np. funkcją MyClass::del() w każdym z destruktorów?
2) Czy usunięcie MyClassA spowoduje wywołanie destruktora MyClass, czy też muszę uczynić destruktor MyClass wirtualnym żebym to się stało?

#cpp #
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@lionbest: ten void* to tam sobie dodałem tak tylko dla przykładu. zresztą, delete na staticcast(this->voidptr) już ma sens. ale dziękuję za odpowiedź. :)
  • Odpowiedz
@Dijuna: Generalnie to tak jak masz napisane to powinieneś mieć virtual przy destruktorze, żeby działało zawsze (w MyClass). Dopóki nie pokażesz więcej kodu trudno powiedzieć co się stanie.
  • Odpowiedz
@xan-kreigor: trzeba uzyc sieci neuronowej (tyle ze siec bedzie, nomen omen, białkowa) - twoja aplikacja uzywajac wykopapi wrzuci obrazek na mirko z tagami cebuladeals i programowanie, potem pobierasz komentarze jak w trescu komentarzy bedzie slowo "anime" lub "gowno" to znaczy ze obrazek jest anime
  • Odpowiedz
kod na pastebin

Mam sobie taki kod, to nie jest prawdziwy program tylko wyciągnąłem samą zasadę działania żeby działało jak najprościej i można było sobie wkleić jak ktoś ma Qt Creatora:
1) Mam listę obiektów i nie chcę w żaden sposób na nią wpłynąć,
2) Chcę wybrać kilka jej elementów (w przykładzie: te których nazwa nie jest pusta, lista indeksów) i posortować na podstawie jakichś ich wartości,
3) Chcę otrzymać listę indeksów do tej oryginalnej listy, posortowanych z użyciem tych wartości.
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Czesc,

chcialem napisac sobie funkcje compile-time, ktora zsumuje mi sizeof kazdego elementu w std::tuple, kod wyglada tak:
http://ideone.com/yNH8S3

dziala. Niby. Chcialem dodac sobie constraint za pomoca enable_if tak aby liczone to bylo tylko dla typow POD. Pozniej chce zrobic druga wersje dla mojego specjalnego typu, ew. wymagac, zeby klasy non-POD mialy metode size(). Tutaj cos mi sie wywala i kompilator na mnie krzyczy. Za cholere nie moge dojsc o co mu chodzi. (nie jestem master w metaprogramowaniu wiec pytam tu)
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mirki z #programowanie #cpp #cpp11 najlepiej #lodz ale mogą być też inne miasta.
Poszukuje konkretnego i dobrego szkolenia z C++ dla grupy osób. Poziom szkolenia żeby był od średniego do nawet mocno zaawansowanego. Znacie jakieś dobre kursy które możecie polecić?
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Poziom szkolenia żeby był od średniego do nawet mocno zaawansowanego


@Kramarz: nie wiem ile osób w Polsce zna ten język na takim poziomie, ale na pewno nikt z nich nie prowadzi szkoleń.
  • Odpowiedz
@Kaczus2B:
GUI to po prostu biblioteka, to nie szkolenie z C++.

Szkolenie z C++ (11) mogłoby obejmować:
- pisanie wydajnych programów (to że C++ jest szybki nie oznacza, że nie da się napisać wolnego programu)
- nowoczesne zarządzanie pamięcią za pomocą inteligentnych wskaźników i braniem pod uwagę
  • Odpowiedz
@dzaku: koledze chodzi o to, że w C++11 i nowszych odradza się grzebanie bezpośrednio na wskaźnikach jeśli nie trzeba. Ogółem prawdopodobnie masz skopany design kodu skoro takie rzeczy musisz robić (po nazewnictwie zmiennych też mógłbyś się czegoś nauczyć ;)).

A ogółem jeszcze lepiej to nie korzystać z gotowych tablic tylko:
- jeśli znasz rozmiar podczas kompilacji to std::array,
- a jak nie to std::vector z opcją resize(n) jeśli znasz z góry rozmiar podczas
  • Odpowiedz