Przekazywanie parametrów do funkcji

0

Hej ;)
Mam do Was pytanko. Mam strukturę pojazd(identyfikator, przebieg). Muszę stworzyć funkcję losującą przebieg z parametrami przekazywanymi przez:

  • wartość
  • wskaźnik
  • przez referencję
  • przez referencje const
#include <iostream>
#include<ctime>
#include <cstdlib>
using namespace std;
struct pojazd{
    int przebieg;
    string id;
};
void init(pojazd & p, string identyfikator);
pojazd los1(pojazd p);
void los2(pojazd *p);
void los3(pojazd & p);
void los4(const pojazd & p);
void wypisz(pojazd p);
int main()
{
    int n = 15;
    pojazd *wsk = new pojazd[n];
    srand(time(NULL));
    pojazd samochod1;
    init(samochod1, "Porsche");
    los1(samochod1);
    wypisz(samochod1);
    pojazd samochod2;
    init(samochod2, "Opel");
    los2(&samochod2);
    wypisz(samochod2);
    pojazd samochod3;
    init(samochod3, "Audi");
    los3(samochod3);
    wypisz(samochod3);
    delete [] wsk;
    return 0;

}

void init(pojazd & p, string identyfikator){
    p.id = identyfikator;
}
pojazd los1(pojazd p){
    pojazd nowy;
    nowy.przebieg = rand()%300000;
    return nowy;
}
void los2(pojazd *p){
    p->przebieg = rand()%300000;
}
void los3(pojazd & p){
    p.przebieg = rand()%300000;
}
void los4(const pojazd & p){
    pojazd nowy;
    nowy.przebieg = rand()%300000;
}
void wypisz(pojazd p){
    cout << "Identyfikator: " << std::string(p.id) << endl;
    cout << "Przebieg: " << p.przebieg << endl;
}

Jak mam to zrobić w funkcji los1 i los4, żeby zmieniła wartość przebiegu w strukturze?

5

Nie da się. Tzn w los1 zmienisz lokalną kopię ;​) Ale możesz co najwyżej zwrócić nową zmienną ze zmienionymi danymi.

Btw: https://dsp.krzaq.cc/post/180/nie-uzywaj-rand-cxx-ma-random/ | https://dsp.krzaq.cc/post/176/ucze-sie-cxx-kiedy-uzywac-new-i-delete/

1 użytkowników online, w tym zalogowanych: 0, gości: 1