Mirki++, słuchajcie. Mam dość duże (kilkunastoletnie) doświadczenie w programowaniu. Pisałem kiedyś w C++, ale to było dawno, nieprawda i chyba trochę lameriada. Mam też od czasu do czasu trochę styczności z ANSI C, z prostymi rzeczami nie mam problemu. Chciałbym spróbować iść w kierunku C++, zapewne C++11, ale tym razem porządnie nauczyć się od podstaw. Najlepiej chłonę kompleksowo pokazaną wiedzę, popartą przykładami, z dogłębnym wytłumaczeniem dlaczego tak a nie inaczej. Tylko teraz:
#programowanie #cpp #javascript

Mirki, potrzebuję sposobu na używanie Javascripta w projekcie C++. W sensie żeby w już skompilowanym używać zewnętrznych skryptów z pliku, bo robię grę w której na JSie mają się docelowo opierać eventy map.

Znalazłem coś co się nazywa CliPP i googlowskie v8.h. Nada się to to czy niekoniecznie? :v
Pytanie - dlaczego jak chcę przeciążyć operator wyjścia "<<" to przy zdefiniowaniu nagłówka funkcji w postaci:

ostream& operator<<(ostream& out, Auto& samochod)
Dostaję "Too many parameters for this opertator function".

zaś przy zdefiniowaniu jako zaprzyjaźniona funkcja:

friend ostream& operator<<(ostream& out, Auto& samochod)
jest już ok? Mógłby ktoś mi to wytłumaczyć ;)? Nie besztać, dopiero się uczę ( ͡° ʖ̯ ͡°)

#programowanie #cpp
@Swiezutki: próbujesz pewnie zdefiniować ją jako metodę klasy Auto, a tak się nie da, bo pierwszym argumentem (ukrytym) będzie 'this'. Musiałaby to być ewentualnie metoda klasy ostream, ale nie możesz modyfikować jej źródeł. Jedyna możliwość to zdefiniować ją jako globalną funkcję i zaprzyjaźnić z klasą.
Mirki, mam prostą strukturę punktu

struct point {

int x, y;

point() {}

}

I mam do niej przeciążony operator << (wypisania w strumieniach):

ostream& operator<<(ostream& out, point p) {

return out << "(" << p.x << " " << p.y << ")";

}

Da się jakoś analogicznie przeciążyć operator >>, żebym mógł sobie wczytać punkt pisząc po prostu

cin >> p
?

#programowanie #cpp
tak, da się, (poprawione) kodziki:

ostream& operator<<(ostream& out, const point& p) { return out << ...; }

istream& operator>>(istream& in, point& p) { return in >> p.x >> p.y; }

(przy czym nie uwzglednilem sprawdzania bledu strumienia i zakladam format inputu "10 20", a nie "(10, 20)")
Czy ta funkcja potrzebuje jeszcze zabawy nad optymalizacją?


1. "czy trafiono" z okresloną szansą - gdy otrzyma mnoznik < 0


2. "czy trafiono, powiekszone o mnoznik" - gdy otrzyma mnoznik > 0


int perChance(int szansa, int mnoznik)

{

if (szansa <= 0) {return 0; }

int temp;

temp = rand()%100;

```if (mnoznik < 0) { if (temp < szansa ) {return 1; } else {return 0; } }else { if (temp <
@losiul: vtable jest tworzone tylko, gdy masz jakieś metody wirtualne i myślę, że o to właśnie chodziło @KrzaQ2.

@Ajdont: Pytasz jak to jest zrealizowane, jak to działa "pod spodem"? Czy może pytasz dlaczego tak to zostało wymyślone i dlaczego na to pozwala język?

Na drugie pytanie odpowiedział @blesher i @JanekGreen. Na pierwsze pytanie odpowiedź jest długa i skomplikowana ;) @Losiul częściowo odpowiedział, ale temat jest głębszy.
Mam dll'kę. Mam nazwę funkcji przez nią udostępnianej. Potrzebuję adresu tej funkcji względem początku modułu dll.

Normalnie po prostu załadowałbym ją i zrobił tak:

HMODULE libraryHandle = GetModuleHandle(TEXT("biblioteka.dll"));

void* procPointer = GetProcAddress(libraryHandle, "NazwaFunkcji");

DWORD_PTR offset = (DWORD_PTR)procPointer - (DWORD_PTR)libraryHandle;

Problem polega na tym, że chcę tak zrobić z 32-bitową biblioteką pod 64-bitowym procesem. Niby mógłbym odpalić własny exe 32-bitowy, zrobić w nim powyższe i wykorzystać to w 64-bitowym, ale mi to nieco
@Pustulka Pewnie jeszcze przez jakiś czas tak będzie, ale patrząc na IntelliJ i na PyCharma to mają oni naprawdę duży potenciał na zrobienie czegoś dobrego. Bo w sumie to poza VS (które dopiero teraz jakoś bez resharpera działa), i Qt Creatora to z C++ jest naprawde problem. Strasznie mnie boli to że nie ma takiego dobrego IDE ( w sensie na poziomie IntelliJa)
Mam pytanie do ogarniaczy:

Obecnie pracuje na platformach ARM (BeagleBone/RADXA/CubieBoard). Stworzyłem ogólnie program którego zadaniem jest zarządzanie wszelakimi modułami (SOAP, algorytmy temperaturowe, sterowanie Moxą i GPIO) via server UDP. Wszystko było super, niestety czym dalej w las i czym więcej pojawia się modułów tym python... powoli nie wyrabia (głównie sprawy wielowątkowości i rozbudowania samych klas). Zastanawiałem się nad zmianą języka i po krótkiej analizie wybrałem C++.

Ktoś może pracował w C++ z
@PsichiX: Patrz

--> CLion jest do odpalenia na Windowsie, VS też, (oba służą do programowania w C i C++) to bezpośrednia konkurencja

--> CLion możesz odpalić też na linuksie gdy potrzebujesz ide, żeby np przeportować twój świetny program z Windowsa - to jest argument w czym CLion jest lepszy.

A co do pytania to nie ponawiaj, bo twoje pytanie jest złe już w samej konstrukcji, bo zakłada, że VS musi być
Mireczki, skad wziąć bibliotekę curlbuild.h?

Sciągnąłem z gita ale tam są tylko takie:

curlbuild.h.cmake curl.h easy.h mprintf.h typecheck-gcc.h

curlbuild.h.dist curlrules.h .gitignore multi.h

curlbuild.h.in curlver.h Makefile.am stdcheaders.h

#cpp #programowanie #curl
Jako że zacząłem klasę maturalną trzeba porządnie się wziąć do nauki przed maturą. Chciałem więc otworzyć sobie w domu projekty z C++, które robiłem w szkole w tamtym roku szkolnym. Zainstalowałem CodeBlocks

type of instalation: Full: all plugins, all tools, just everything


ale coś nie do końca pykło. Przy otwarciu pojawia się komunikat:

Environment error


Can't find compiler executable in your configured search path's fo GNU GCC Compiler

A gdy otwieram jakiś
Ostatnio zacząłem ciut bawić się D. Język wydaje się fantastyczny. Najpierw napisałem prostą appkę do pracy, teraz coś, czego od dawna mi brakowało (albo nie umiałem znaleźć): online formatowarkę kodu C++. Wszystko w D (ze wsparciem vibe.d).

Póki co, muszę stwierdzić, ƶe o ile język jest super, tak jak społeczność, to dokumentacja... odbiega od tego do czego przyzwyczaił mnie Qt, msdn, czy ruby.

Kod: https://github.com/KrzaQ/cppformat (nie ma tego wiele, to jest wrapper
Bardzo zgrabnie kod wyglada - niektore featury D trafiaja do C++ - chociazby auto, w C++17 maja (w koncu!) byc moduly i koncepty. Inne wygladaly fajnie na poczatku (makra) ale w C++ masz ulepszone templaty i constexpr obecnie.

(sfml 2.0)

To znajduje się w pętli głównej, powtarzanej 60 razy/sekundę.

if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::P && paused == 0)

{

cout << "Gra Wstrzymana" << endl;

paused = 1;

}

(bool paused wstrzymuje odświeżanie okna zwykłym ifem)

1. Dlaczego Event::KeyPressed oraz Event::KeyReleased nie obsługuje klawiszy innych niż Alt, Escape itp? Czym to można zastąpić? (oprócz Keyboard::isKeyPressed)

2. Jak wyłączyć pauzę? Jeśli zrobię analogicznie, tj.

if(event.type == sf::Event::KeyPressed
Mireczki, co może powodować błędy po rozbiciu pętli na wątki?

Mam na myśli taką sytuację w uproszczonym modelu.

Mam pętlę która wykonuje operacje na tablicy 3D metodą iteracyjną rozbitą na 3 zagnieżdżone pętle for:

for(int x = 0; y
{

for(int y= 0; y
for(z = 0; z
// Do stuff

}

Zamieniam ją na wiele wątków ten sposób:

std::vector loadingThreads;

for(int y = 0; y
{

loadingThreads.push_back(std::thread(&KlasaBazowa::NowaFunkcja, this, paramA , y));
@Shilghter: pokaż więcej kodu.

I taki offtopic: polecam

emplace_back
zamist

push_back
, który przekaże argumenty od razu do konstruktora, dużo czytelniejsze, a w dodatku nie ma zbędnego move constructora, który by się przy

emplace_back
wykonał.

I należy też pamiętać, że

std::thread
nie jest kopiowalny i że jego konstruktor bierze argumenty przez kopię, a referencje musisz przkezywać przez reference wrappera (

std::ref
).
@Shilghter:

To jest stała, w tej wersji zawsze wynosi 16


więc costam % 16 <= 15, na pewno się nie powtarza?

A jest możliwe, że wątki się gubią jeśli te operacje są wykonywane dla wielu róznych chunków jednocześnie?


wut?

Jest możliwe, że tworzy się za dużo wątków i stąd błędy?


Watków nie powinno być za dużo, masz coś takiego jak

std::thread::hardware_concurency
, który oznacza liczbę wątków możliwych do realizacji równocześnie, ale