#programowanie #cpp

Czy to przypisanie jest poprawne? Na egzaminie mam ujemne punkty niestety, ja bym nie zaznaczył ponieważ rozmiar tablicy się nie zgadza,ale w każdym kompilatorze to przechodzi,używam Visuala

const int MAXN =7;
enum dnityg
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

( okazało się że choruje na coś innego)


@MilFun: Psychiatria w Polsce XDDD i wy sie dziwicie ludziom, że boją się iść do psychiatry jak tak na prawdę większość nie umie nawet zdiagnozować choroby i ma wyrąbane na swoich pacjentów, bo tylko hajs sie liczy.

A co do AMA to jestem za.
  • Odpowiedz
@yras8: Bo imie to tablica 10 znaczków. Nie możesz zapisywać do tablicy z języka C, ciągów znaków operatorem przypisania. Musisz użyć funkcji z języka C strcpy albo zmienić imie na typ std::string.

Aha i agregatki inicjalizujemy nawiasem klamrowym {}.
  • Odpowiedz
Jak co wieczór #glupiepytaniametoksyfenidyny ( ͡° ͜ʖ ͡°)

Chciałbym przypisać wskaźnik do adresu podanego przeze mnie. Gdzie mogę znaleźć/ustawić zakres pamięci na jakiej ten program będzie operował? Konkretnie chodzi mi o podgląd na żywca w debugerze jak ten kod będzie śmigać ( ͡° ͜ʖ
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Metoksyfenidyna9: z punktu widzenia standardu, zapisywanie do losowej pamięci to Undefined Behaviour.

Żeby uzyskać pamięć od systemu operacyjnego, używasz operatora new lub innej alokacji pamięci.

Dostęp do pamięci nie należącej do procesu kończy się segfaultem.
  • Odpowiedz
Mireczki pomóżcie biedakowi. Chcę zrobić konsolową bazę danych z zapisem do pliku, najprostsze dziadostwo z dodawaniem i usuwaniem danych. Znacie jakąś stronkę z "tutorialem" do czegoś takiego ? Od razu mówię że jestem na poziomie planktonu ze znajomością języka (ogarniam jedynie jakieś kalkulatory na kiju) ale nie oczekuję gotowych rozwiązań, jedynie jakiegoś drogowskazu w jaki sposób to ugryźć, czego użyć i jak się czego używa.
#cpp #naukaprogramowania
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mam stosunkowo mały program. Dwie klasy - jedna po drugiej dziedziczy.
Chciałbym mieć ok 20 parametrów które mogą ulec zmianie, konfigurowalnych w jednym miejscu w kodzie.
Tak, żeby dostęp był do nich w różnych plikach / klasach.
Jest jakiś lepszy sposób niż macro w pliku z mainem (#define kazdyParametr wartosc)? Jaki (cpp98)?

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

@Garg84: Tak jest constexpr najlepiej w namespace albo w scopie klasy.
Jeżeli będziesz chciał je przenieść jako zewnętrzne pliki konfiguracyjne to pozostaje ci Singleton.
  • Odpowiedz
@dupasmoka: @lionbest:
Padło na nagłówkowy z constami. Dziękuję Wam bardzo :)

W sumie nigdy nie używałem singletona, ani za bardzo nie wiedziałem na czym polega. Przy okazji nauczyłem się czegoś niespodziewanego z wzorców projektowych.
  • Odpowiedz
Jaka jest różnica dla konstruktora klasy w C++ czy przekaże mu dane przez referencję czy przez wartość?


@Metoksyfenidyna9: taka sama jak w każdej innej funkcji lub metodzie ¯\_(ツ)_/¯

Czy działanie destruktora opisuję tylko gdy stricte zwracam się w konstruktorze o przydzielenie pamięci chociażby przez new?


@Metoksyfenidyna9: w destruktorze klasa powinna zwolnić zasoby które wcześniej pozyskała, czyli np.: zaalokowaną pamięć, otworzone pliki, zablokowane mutexy itd. To oczywiście kwestia konwencji,
  • Odpowiedz
- klasa bazowa powinna mieć destruktor wirtualny (odsyłam do lektury, z grubsza: wskaźnik na bazową może przechowywać obiekt dziedziczący, bez wirtualnego dtora nie zawołasz dtora klasy dziedziczącej)

Dzięki, zapomniałem

- czy implementacja operatorów różni się pomiędzy Date a TimeStamp? jeżeli nie, to nie musisz ponownie ich definiować

Chyba będzie się różniła. Zastanawiam się czy liczyć że data jest różna tylko gry różnica > minuty*60*24

-
  • Odpowiedz
Czym mogę podglądnąć "na żywo" zmiany zachodzące w pamięci? Przy inicjalizacji itp zmiennych, takie podstawy.


@Metoksyfenidyna9: najprosciej chyba dowolnym debuggerem. Nic innego nie przychodzi mi do glowy
  • Odpowiedz
  • 0
@TMBRK musisz dodać flagę -ggdb do kompilacji i potem jak padnie to analizujesz coredump i backtrace pokaże na czym padlo
  • Odpowiedz
Problem rozwiązany - w zestawie narzędzi qtcreatora z jakiegoś powodu był brak wybranego kompilatora. Po jego wybraniu wszystkie błędy składni zniknęły.
  • Odpowiedz
@Metoksyfenidyna9: Ach, czyli instance.

Różnica jest prosta - konkretyzacja to utworzenie funkcji lub typu odpowiadającego zdefiniowanym metatypom. Jest to najczęściej automatyczne i dokonuje tego kompilator, ale można to wymusić jak w przypadku w książce. Dla przykładu, kompilowanie dużych bibliotek jest szablonów jest czasochłonne i w bibliotekach numerycznych dokonuje się konkretyzacji wprost dla typów zmiennoprzecinkowych, gdyż nikt nigdy nie będzie stosować tego dla innych typów.
Krótko: z szablonu tworzysz nowy
  • Odpowiedz
@Metoksyfenidyna9:
1. w przypadku double, lepiej zawsze przez wartość. ale jak masz jakiś duży obiekt, to lepiej przez referencję dowiadywać się o jego stanie (const Object& obj), bo wtedy nie zachodzi potrzeba kopiowania go całego. chyba, że chcesz jakoś zaznaczyć, że ten double może być opcjonalny(chociaż pointer to nie najlepszy pomysł).

2. struct to to samo co class, tylko ma domyślnie publiczne dziedziczenie i domyślny publiczny dostęp do składowych
  • Odpowiedz
Kiedyś coś pisałem sobie w #cpp i teraz postanowiłem sobie do niego wrócić, zacząłem robić sobie proste zadanie z /r/dailyprogrammer na reddit i coś się dziwnnego stało mam taki kawałek kodu (dla czytelności pominę std::):

bool checkChars(string _string){
int counterX, counterY;

// JAKIS KOD
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@h00k: tworząc zmienną int counterX przesuwasz tylko wskaźnik stosu o wielkość inta. nie inicjalizujesz go w żaden sposób, gdybyś może chciał tam jakoś później wsadzić jakąś wartość(na przykład w jakimś forze - gdyby tam zdeklarować tę zmienną, to wypadłaby z zasięgu poza forem). skoro ty będziesz chciał przypisać tam wartość dopiero później, to nie ma potrzeby inicjalizować jej przy starcie - ale do tego czasu zawierasz cichy pakt z kompilatorem,
  • Odpowiedz