• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Referencja struktury w funkcji (c++)

Object Storage Arubacloud
0 głosów
920 wizyt
pytanie zadane 20 marca 2018 w C i C++ przez Sic Dyskutant (8,510 p.)
edycja 20 marca 2018 przez Patrycjerz

Witam napisałem program nie jest on skomplikowany bo chodzi o wywołanie i tutaj leży problem wiem w którym miejscu i z czym jednak nie wiem jak go rozwiązać. Mianowicie chodzi tutaj o zmienna struktury mm (który nie jest zainicjalizowana). Po prostu nie wiem jak z tego wybrnąć.

#include <iostream>
struct Batonik
{
        char marka[40];
        double waga;
        int kalorie;
};

void fun (Batonik & ps, const char * naz = "Millenium Munch", double masa = 2.85, int wart = 350);

int main()
{
        Batonik mm; //powinna byc zainicjalizowana!
        fun (mm);

        return 0;
}

void fun(Batonik *ps, char * naz, double masa, int wart)
{
        naz = ps->marka;
        masa = ps->waga;
        wart = ps->kalorie;
        std::cout << "Nazwa: "<< naz << "\nWaga: " << masa << "\nKalorie: " << wart << std::endl;
}

 

komentarz 20 marca 2018 przez mokrowski Mędrzec (155,460 p.)
A tak ogólnie.... to .. co ty w tym kodzie chcesz osiągnąć? Bo błędy zaciemniają obraz. Z jednej strony foo(...) wygląda na funkcję która ma coś inicjować, typy danych nie zgadzają się z deklaracją a w samym ciele funkcji przypisujesz coś do zmiennych które przekazałeś i je wyprowadzasz na ekran??

1 odpowiedź

+1 głos
odpowiedź 20 marca 2018 przez Patrycjerz Mędrzec (192,320 p.)
Ten kod nie zadziała z powodu braku definicji funkcji z referencją. Obiekt struktury nie musi być zainicjalizowany przed wywołaniem funkcji, jedynie odczyt z takiego obiektu może być ryzykowny, ale sam język czegoś takiego nie zabrania.
komentarz 20 marca 2018 przez Sic Dyskutant (8,510 p.)
Dobra dziękuję. Rozwiązałem ten problem bez użycia referencji i zamieniając char na string.

A jakbym mógł zdefiniować referencje w funkcji ?
1
komentarz 20 marca 2018 przez Patrycjerz Mędrzec (192,320 p.)

Deklaracje

void fun (Batonik & ps, const char * naz = "Millenium Munch", double masa = 2.85, int wart = 350);

oraz

void fun(Batonik *ps, char * naz, double masa, int wart);

dotyczą różnych funkcji. Mam rozumieć, że chciałeś stworzyć funkcję, która inicjuje obiekt struktury? Otóż najpierw musisz zrobić deklarację i definicję funkcji zgodne ze sobą (typem zwracanym, nazwą, typami argumentów). Potem przypisujesz polom obiektu kolejne argumenty funkcji.

Trochę nie rozumiem, dlaczego masz problem z tak trywialnym kodem.

komentarz 20 marca 2018 przez Sic Dyskutant (8,510 p.)
Po prostu źle nacisnąłem i nie zwróciłem uwagi na to. Dopiero po wstawieniu kodu się zorientowałem.

Podobne pytania

0 głosów
3 odpowiedzi 1,451 wizyt
pytanie zadane 11 stycznia 2018 w C i C++ przez kptpiotr Początkujący (330 p.)
+1 głos
1 odpowiedź 163 wizyt
pytanie zadane 24 lutego 2019 w C i C++ przez Teslum_369 Gaduła (4,190 p.)
0 głosów
2 odpowiedzi 390 wizyt
pytanie zadane 7 listopada 2015 w C i C++ przez niezalogowany

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...