#programowanie #cpp #cpp14 Jeżeli mam sobie takie pliczki: http://pastebin.com/Qn0p3U9z mam #include "globals.h" w main.cpp i globals.cpp, ale planuję by było wszędzie, takie wartości stałe i globalne. No ale funkcja Globals::_use_shares() jest wywoływana dwa razy... qDebug jak tam dam to odzywa się dwa razy... nie rozumiem dlaczego, tzn. jak zrobić żeby tak nie było?
1. Header guard w globals.h 2. Zmienne globalne dostępne z headera powinny być zadeklarowane jako extern. Potem gdzieś w jakimś pliku źródłowym (niekoniecznie globals.cpp, chociaż to wydaje się być odpowiednim miejscem) musisz je zainicjalizować (czyli use_shares = _use_shares()). 3. C++ to nie Python - tu nie wskazujemy, że funkcja jest "prywatna" poprzez rozpoczęcie jej podkreśleniem. Jeśli chcesz mieć taką "niewidoczną" wolną funkcję (free function), czyli dostępną
@virgoerns: 2. tak zrobiłem :) 3. podkreślenie na początku nie oznacza u mnie nic takiego, po prostu wcześniej miałem deklaracje tych stałych poprzez funkcje lambda ale coś mi tam nie działało i na szybkości sobie potworzyłem takie nazwa_zmiennej = _nazwa_zmiennej() - teraz już wiem, że to nie miało nic wspólnego z tym, że mi nie działało więc lambda pewnie wrócą i w globals.cpp będą :)
@virgoerns: 1. nie będą potrzebne bo globals.h nie planuję dołączać do plików .h, są zupełnie niezależne od całej reszty programu i nie musza być krzyżowo łączone
@Dijuna: Choćby zamiast stałej zwracać funkcją, bo jak się okaże, że za jakiś czas uprawnienia się zmienią - znaczy czy może coś zrobić czy nie będziesz wnioskował na większej ilości danych - to zmienisz tylko w funkcji sposób sprawdzania warunku, a nie w iluś tam miejscach rozsianych po całym kodzie. Pisząc kod nie patrz tylko na to co zyskasz dziś, ale co będziesz robił jutro, jak będziesz musiał parę rzeczy
Jeżeli mam sobie takie pliczki:
http://pastebin.com/Qn0p3U9z
mam #include "globals.h" w main.cpp i globals.cpp, ale planuję by było wszędzie, takie wartości stałe i globalne. No ale funkcja
Globals::_use_shares()jest wywoływana dwa razy... qDebug jak tam dam to odzywa się dwa razy... nie rozumiem dlaczego, tzn. jak zrobić żeby tak nie było?1. Header guard w globals.h
2. Zmienne globalne dostępne z headera powinny być zadeklarowane jako
extern. Potem gdzieś w jakimś pliku źródłowym (niekoniecznie globals.cpp, chociaż to wydaje się być odpowiednim miejscem) musisz je zainicjalizować (czyliuse_shares = _use_shares()).3. C++ to nie Python - tu nie wskazujemy, że funkcja jest "prywatna" poprzez rozpoczęcie jej podkreśleniem. Jeśli chcesz mieć taką "niewidoczną" wolną funkcję (free function), czyli dostępną
2. tak zrobiłem :)
3. podkreślenie na początku nie oznacza u mnie nic takiego, po prostu wcześniej miałem deklaracje tych stałych poprzez funkcje lambda ale coś mi tam nie działało i na szybkości sobie potworzyłem takie
nazwa_zmiennej = _nazwa_zmiennej()- teraz już wiem, że to nie miało nic wspólnego z tym, że mi nie działało więc lambda pewnie wrócą i w globals.cpp będą :)1. nie będą potrzebne bo globals.h nie planuję dołączać do plików .h, są zupełnie niezależne od całej reszty programu i nie musza być krzyżowo łączone
Pisząc kod nie patrz tylko na to co zyskasz dziś, ale co będziesz robił jutro, jak będziesz musiał parę rzeczy