Jak przekazać string do funkcji z klasy ?

0

Napisałem taki program:

#include <iostream>
#include <cstdio>
#include <cstdlib>

using namespace std;

class osoba
{
private:
    string nazwisko;
    string Imie;
public:
    static int ile_osob;
    osoba()
    {
        ile_osob++;
    }
    void zapamietaj(string nazwa,string imie)
    {
        nazwisko = nazwa;
        Imie = imie;
    }
    void wypisz()
    {
        cout << "Imie: " << Imie << " Nazwisko: " << nazwisko << endl;
    }
};
int osoba::ile_osob;
int main()
{
    osoba Adam,Tomek,Karol;
    cout << "Osob jest : " << osoba::ile_osob << endl;
    Adam.zapamietaj("Koloczuk","Adam");
    Adam.wypisz();

    getchar();
}
 

Ale czy ja przekazuje parametry aktualne jako stringi czy jako C-string ? Bo wydaje mi się, że jako C-string i nie wiem jak to przekazywać przez stringi.

2

przekazujesz jako c-string ale klasa string ma konstruktor ktorym parametrem jest char[] i konwertuje to na string (niejawna konwersja)

jak chcesz przekazac jako string to zrob obiekty string i je przekaz.

feedback ode mnie jezeli chodzi o ten kod jest nastepujacy

  1. nie uzywaj static. Static jest ZLE (w tym przypadku) jezlei chcesz zrobic sobie jakas zmienna ktora liczy osob zrob osobna klase (kontener) na te osoby. Np klase Osoby (najlepiej to wrzucic je do vectora i wtedy masz vector.length, albo do seta jezeli nie chcesz by dane sie powtarzaly)
  2. nie powinno byc czegos takiego jak zapamietaj. Te rzeczy powinny dziac sie w konstruktorze (bo chyba nie bedziesz zmienial nazwiska czy i imienia w tym samym momencie? kiedykolwiek?)
  3. wypisz powinna byc zastapiana poptrzez operator << dla ofstream (googluj przeladowanie operatorow, poszukaj o <<)
  4. getchar --> usunac i znalezc normalne srodowisko ktore zatrzymuje IDE
  5. zdecyduj sie czy piszesz zmienne duzymi czy malymi czy jak
0
void zapamietaj(string nazwa,string imie)

zapamietaj() przyjmuje std::string, więc c-stringi zostaną w locie zamienione na stringi i przekazane do funkcji. A właściwie to zostaną utworzone tymczasowe obiekty std::string i one zostaną przekazane do funkcji.

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