@Lacwik: Jak sam błąd mówi, wychodzisz gdzieś poza zakres w stringu.

EDIT: Sprawdź wszystkie pętle w programie. Szczególnie tam, gdzie poruszasz się po indeksach w stringu.
  • Odpowiedz
@Lacwik: Ustaw asercję przed każdym odwołaniem do danego elementu stringa, tj. assert(pozycjaktórąpróbujeszczytać < stringlen). Wtedy wywoła to abort() i dostaniesz crash report, będziesz mógł dokładnie przeanalizować gdzie popełniasz błąd. Potem szukasz konkretnego indeksu dla którego masz problem na przykładzie testowym.

Tego się nie da zgadnąć samym patrzeniem na kod.
  • Odpowiedz
Przesunąłem przycisk i aktualny stan konta z dołu na bok, identyfikatory dla każdej transakcji, dodałem obsługę edycji transakcji i wstępne CI na Windowsa(wymaga dopracowania, chociażby kopiowanie wymaganych plików DLL) bo na Linuxa to już od dłuższego czasu działa. Następne w kolejności są:
- usuwanie rekordów
- kategorie
- opcje
- wykresy

Jakieś
Leinnan - Przesunąłem przycisk i aktualny stan konta z dołu na bok, identyfikatory dl...

źródło: comment_X1BNGaLCkOw94gQP6G6hNcjFnlCvZXFP.jpg

Pobierz
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jakie będzie wyjście z tego programu i dlaczego każdy kompilator daje inny wynik? :O

#include

int main()
{
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@kaaye: ano widzisz, ucięło gwiazdki i stąd błędy kompilacji.

Mi się kompiluje zarówno na cpp.sh jak i clionie.

Nie, kompiluje się na GCC, ewentualnie clangu. CLion nie ma nic do tego.
  • Odpowiedz
@CppPolska: Zazwyczaj większość linków jest naprawdę bardzo fajna... tak dzisiaj przy czytaniu pierwszego linku mam spotrzeżenie, problem jest tylko i wyłącznie w pierwszej linijce:

using namespace std;
  • Odpowiedz
@CppPolska: Ja pójdę o krok dalej: nie ma zupełnie nic złego w using namespace std, o ile nie używa się go w plikach nagłówkowych. Sam jednak preferuję using namespace std tylko w ograniczonym scopie, bo jakoś tak lepiej mi się czyta std::find, samo find jest jakieś takie... nagie...
  • Odpowiedz
#cpp #programowanie #visualstudio Mireczki, mój Visual Studio p----------o, odpaliłem po przerwie projekt i jak daje Local Windows Debugger, żeby go odpalić to na dole pojawia się czerowny pasek i ściąga jakieś symbloe: Loading Symbols, trwa to dłuższą chwilę, program odpala isę dopiero po jakims czasie a te symbole i tak się ładują.. miąłem kiedys taki problem ale nie pamietam jak go rozwiązałem..
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#cpp #programowanie
Jakie IDE do C++ na początek polecacie? Używałem Code::Blocks i CodeLite, ale w żadnym z nich nie da się ustawić całkowicie ciemnego interfejsu, bo i tak połowa zostaje biała przez co po dłuższej sesji w nocy bolą oczy :/ Visual Studio niby spoko, ale mam wrażenie, że za bardzo rozbudowany jak na początek ;p
  • 26
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@CppPolska:
calkiem zgrabnie tylko:
1. nie jest to przenosne i troche burzy zalozenia cmake'a (file(GLOB SFML_LIBS ${DYLIB_PATH}*.dylib))
2. cmake ogarnia testy i nie trzeba robic custom targetu

// edit. PS. jak na strone, ktora nazywa sie "CppPolska" to content macie glownie o gnu make i cmake... :D
  • Odpowiedz
@TheNewIcek: 1. Racja, musialbym to dodać tak, żeby rozszerzeń nigdzie na sztywno nie podawać

2. Próbowałem korzystać z testów w CMake, nie udało mi się tego skonfigurować tak, jakbym tego chciał ( ͡° ͜ʖ ͡°) Więc na razie zostało tak ( ͡° ͜ʖ ͡°)

3. W sumie, programiści C/C++ w jakiejś części korzystają z make i cmake ( ͡° ͜ʖ
  • Odpowiedz
@bigbadandwrong: volatile sprawia, że kompilator generując kod musi zawsze odwołać się bezpośrednio do pamięci. Bez volatile zmienne najczęsciej są trzymane w rejestrach. Volatile przydaje się, gdy używasz memory mappingu np. programujesz mikrokontroler, w którym w komórce pamięci o adresie 100 znajduje się aktualna temperatura. Gdyby w tym przypadku nie użyłbyś volatile, to kompilator zinterpretuje to tak, że ta komórka pamięci się nie zmienia, więc nie będzie jej ładował za każdym
  • Odpowiedz
Mam wrażenie, że inicjalizowanie zmiennych składowych obiektu w #cpp jest zbyt ograniczające. Wszystko musi być wywołane w liście inicjalizacyjnej, a przez to nie możemy wykonać jakichś prostych obliczeń, a konstruktor obiektu składowego wywołać z ich wynikiem. Są jakieś dziwne hacki z używaniem lambd, ale nie jest to ani czytelne, ani eleganckie.
Obecnie w takiej sytuacji zmusza się programistów albo do rezygnowania z konstruktorów i używania do inicjalizacji zwykłych funkcji, albo
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@frogi16: możesz przypisywać wartości domyślne bezpośrednio w deklaracji zmiennych składowych klasy w deklaracji klasy, możesz wołać w konstruktorze inne konstruktory, możesz stosować sensowne wartości domyślne via default ctory nadając sensowne wartości później aka "lazily".

Poza tym, jeżeli klasa ma tak dużo pól (no właśnie, ile?), że lista inicjalizacyjna staje się niewygodna/nieczytelna, to może czas na przeniesienie części składowych do osobnej klasy/struktury?
  • Odpowiedz
@Saly: no na przykład niech będzie jakiś niewielki program, którego proste GUI mamy podzielone na kilka mniejszych "kontenerów". Dość logiczne jest, żeby każdy z tych kontenerów otrzymywał w konstruktorze takie podstawowe parametry jak np. swoja wielkość, tak żeby sam zarządzał rozłożeniem już tych podstawowych elementów w swoim wnętrzu. I dopóki to jest jakiś trywialny przypadek, że szerokość kontenera to połowa szerokości okna to spoko, inicjalizacja w konstruktorze daje radę. Ale
  • Odpowiedz