String jako argument funkcji

0

Witam

mam problem z tym kodem:

string Scena::WyszukajObiekt(string nazwa_pliku)
{
cout << nazwa_pliku;
}

wywołanie funkcji:

Scena scena;
char *nazwa_pliku;
cin >> nazwa_pliku;
scena.WyszukajObiekt(nazwa_pliku);

po wywołaniu funkcji wyskakuje błąd naruszenia pamięci

co jest nie tak?

2
 char *nazwa_pliku;

Deklaruje, że bedzie jakaś pamięć na "string" (a w zasadzie ciąg znaków), ale jej nie przydziela

tu natomiast:

string Scena::WyszukajObiekt(string nazwa_pliku)
{
cout << nazwa_pliku;
} 
  1. używasz typu string, więc nie wiem czemu deklarujesz wcześniej char *nazwa_pliku;
  2. informujesz, że zwrócisz jakiś string, a tego nie czynisz.
2

Na tym etapie trzymaj się std::string i nie dotykaj char*, bo więcej błędów niż pożytku z tego będzie.

Swoją drogą dobrą praktyką jest przekazywanie parametrów jako const& jeśli ich nie modyfikujesz, czyli w tym przypadku

string Scena::WyszukajObiekt(const string& nazwa_pliku)

Dzięki temu nie kopiujesz niepotrzebnie obiektu.

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