Chciałem zrobić taką "sztuczkę" w C++ - przyjąć w konstruktorze klasy/struktury, wartość typu T1, w jakiś sposób "zapamiętać" typ przyjęty przez konstruktor, a następnie w innej funkcji sprawdzić, czy inny podany typ T2 == T1.

Spróbowałem zrobić to w ten sposób:

struct Foo {
  • 17
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@5z7k9: do porównywania typów w trakcie kompilacji jest std::is_same. ale żeby z tego sensownie skorzystać musiałbyś prawdopodobnie uczynić z Foo template, a zgaduję że tego nie chcesz.
  • Odpowiedz
@KrzaQ2: O ile dobrze widzę to będzie działało tylko dla typów z static types?

@5z7k9: Od C++11 jest do tego typeindex, bo sam hashcode() ci nie wystarczy (może się okazać że dwie mają taki sam), ale fakt faktem nie da się tego zainicjalizować jako constexpr czyli
constexpr Foo bar(3.14f);
nie zadziała.
Generalnie typeid(T) nigdy nie będzie constexpr, nie da się tego tak zaimplementować, no chyba
  • Odpowiedz
#programowanie #cpp mam sobie enum class jakiś i wartość po cascie na int jest zapisywana do bazy danych. Czy mam pewność, że te wartości zawsze będą takie same, po kolei? Bez względu na to, że np. skompilowałem program po zmianach i np. po roku, to wczytując z tej bazy danych tego inta i castując na enuma będzie to samo? Czy jednak muszę pisać = 0, = 1, =
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Dijuna: http://en.cppreference.com/w/cpp/language/enum

When initializers are provided in the enumerator-list, the values of enumerators are defined by those initializers. If the first enumerator does not have an initializer, the associated value is zero. For any other enumerator whose definition does not have an initializer, the associated value is the value of the previous enumerator plus one.

Te wartości są dobrze zdefiniowane i się nie zmienią.
  • Odpowiedz
Mireczki kochane z #programowanie i #informatyka polećcie jakąś książkę, taką dla początkujących z #cpp (zmienna zdefiniuje, pętle zrobie, warunkowe instrukcje tez znam, odczyt i zapis z pliku/do pliku jakoś też zrobię), żebym się do matury z informatyki zdążył przygotować i żeby się na studiach przydała.
A poza tematem - gdzie się całej teorii nauczyć? Pozdrawiam!
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Darmowy ebook po sieci krążył "Od zera do gier kodera" ... ja się z tego uczyłem, ale to było daaawno temu i nie wiem czy dalej aktualne...
  • Odpowiedz
@igorovsky: Bo język c++ od czasu napisania tej książki ewoluował bardzo, tak jak i dobre praktyki. Jest po prostu przestarzała, co było dobre lata temu niekoniecznie dobre jest i dziś.
  • Odpowiedz
Mirasy z #programowanie macie moze jakiegos hinta, jak ro zrobic zgodnie ze sztuka? Mam aplikacje klient-serwer, gdzie klient to aplikacja desktopowa dzialaja pod kubuntu, napisana w #cpp z dodatkiem #qt. Serwer jest w #nodejs w oparciu o framework express. Komunikacja po http. Obecnie dziala to na jednej maszynie, ale jest zaprojektowane z zalozeniem, ze obie czesci zostana odeparowane. Do tego w dalekiej przyszlosci
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@enceladus71: HTTPS w zasadzie opiera się o domenę, bo certyfikat ma potwierdzać prawdziwość tejże domeny.

Możecie generować certyfikat przy instalacji (lub wrzucać wygenerowany do instalatora) i wtedy CA w takim certyfikacie jesteście wy, wasza firma, co myślę że jest ok. W końcu jesteście dostawcą rozwiązania, to i możecie być CA.
  • Odpowiedz
@zortabla_rt: Funkcja xd() nie dostaje żadnego argumentu, a void wskazuje na to, ze nic nie zwraca, ale widzę, że pewnie nie ma nic zwracać skoro masz tam couta, w takim razie zamiast " cin >> x;" w 16 linii wywołaj tę funkcje ("xd();") i usuń z niej(wewnątrz już funkcji xd()) tego ifa bo on i tak nic nie wczytuje bo nawet nie masz żadnej zmiennej utworzonej w niej, i będzie
  • Odpowiedz
Link do repo: https://github.com/Leinnan/i3gs

Nowa wersja, tym razem nawet dałem numerek(0.3) mojego programu do ogarniania statusu w i3-gaps/sway wyszła. Dzięki inicjatywie @wolacino porzuciłem cmake, zostaje czyste make, także program z zależności ma jedynie make i w miarę nowoczesny kompilator C++. Od teraz na starcie programu wykrywa on czy jest odpalony w konsoli i jeśli tak to zamiast JSONa pokazuje czysty output komend oddzielony separatorem. Posprzątałem też trochę kod, pozbyłem się "using namespace".
Leinnan - Link do repo: https://github.com/Leinnan/i3gs

Nowa wersja, tym razem naw...

źródło: comment_V5LQSAzBYzHMi7cSKAc14GcJoLRMe1B8.jpg

Pobierz
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@sylwke3100: Ale ja dalej wolę cmake od make'a :D Po prostu:
- i tak nie zaciągam żadnych niestandardowych bibliotek
- przy tak małej ilości plików make nie robi mi różnicy
- najważniejsze- dla użytkownika docelowego zmniejsza to ilość rzeczy jakie musi mieć w systemie i ułatwia mi instalację programu
  • Odpowiedz
@uzytkownikTHCE: @Saly: najlepiej
explicit A(B const& b) : b(b) {} // działa korzystając z konstruktura kopiującego b
explicit A(B &&b) : b(std::move(b)) {} // gdy korzystamy z C++11 działa korzystając z konstruktora przenoszenia b
explicit jest po to aby nie następowała automatyczna konwersjia, np funckja f(A) nie zadziłała z parametrem o typie B
  • Odpowiedz
@uzytkownikTHCE: Nie możesz. Trzeba wektor wskaźników na klasę rodzica. Slicing jest jak są same obiekty, jak masz wskaźniki to slicingu nie będzie (tylko pamiętaj, że wywoływane przez wskaźnik na rodzica metody muszą być virtual).

Ogólnie to przemyślałbym organizację kodu, bo często trzymanie kilku klas w jednym kontenerze to jednak zły pomysł (co się objawia tym, że potem w wielu miejscach rzutujesz). Do tego w wielu zastosowaniach chcesz iterować tylko po
  • Odpowiedz
#cpp #winsock Dzień dobry. Chciałem się zapytać o gniazda, ponieważ utknąłem na odbieraniu danych. Program działa "prawie" jak serwer www: przyjmuje dane i odsyła do przeglądarki 200 OK + nagłówki od CORS (dlatego prawie, nie potrzebne mi jest parsowanie urli, wywoływanie php itd). Obecnie gniazdo ustawione jest na nieblokowalne i pojawia się problem w tym, że od czasu do czasu zaraz po nawiązaniu połączenia recv() przyjmuje wartość -1,
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ly000: Czekać, czyli lecieć z while aż pojawią się dane?

Może i racja z blokowaniem. Tylko jedno pytanie dodatkowo: czy OPTIONS oraz POST mają iść na tym samym gnieździe? Czy raczej odbieramy OPTIONS, odsyłamy przeglądarce nagłówki jakich chce i się rozłączamy?
  • Odpowiedz
@ly000: Dziękuję :) Debilem jestem :P Tylko tak dla pewności: robimy retval = recv(), sprawdzamy w otrzymanym buforze jakie są nagłówki html i wyciągamy (int)content-length, jak tylko suma retval będzie większa niż content-length to odsyłamy własne nagłówki html razem z body i robimy shutdown(socket). Zgadza się?
  • Odpowiedz
Znam TIOBE Index, ale nie chodzi mi o popularność języków na rynku pracy i względem wynagrodzeń, tylko raczej "do czego najlepiej sprawuje się dany język/technologia" i "czym dany język jest na podstawowym poziomie i do jakich zastosowań został przeznaczony przez swoich twórców".

Chciałbym widzieć większy obraz, szerszy kontekst programowania.

Poniższe pytanie dotyczy bardziej filozoficznej kwestii jaką ścieżkę obrać.

W
TamamShud - Znam TIOBE Index, ale nie chodzi mi o popularność języków na rynku pracy ...

źródło: comment_YmFx07yV26yDNf14Yb7Hr0l6gb0itavh.jpg

Pobierz
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#naukaprogramowania #cpp #programowanie

Hej Mirasy, mam problem z napisanym programem. Otóż nie owijając - po odpaleniu próbuję zainicjować tablice CTable, ale one nie tworzą się (nie tworzy obiektów), przez co program jest całkowicie bezużyteczny. Ktoś mógłby coś zaradzić? Uderzam do was, bo sam nie mogę znaleźć jakiegoś błędu.

Tutaj linki:
http://pastebin.com/qSApHN9x (klasa CTable)
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Narkan: na schematach nie pisze się w C++ tylko w pseudokodzie. Zapis jest poprawny, aczkolwiek chyba bez sensu, bo rzutujemy na int i bierzemy funkcję zwracającą int. Tak bym to - po części - rozumiał...
  • Odpowiedz
Napisałem sobie prostą funcję piszącą do socketa. sd jest w trybie NO-BLOCKING więc chciałem mieć pewność, że zawsze dane się wyślą, i że wyśle się tyle ile potrzeba. Tymczasem taka niespodzianka, że jak podmienię write na WriteLoop to nie działa. No musi to być głupie przeoczenie:

http://wklej.org/id/2993407/

#cpp #cplusplus
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach