Mam pewien problem ze wskaźnikami, które próbuje użyć jako argumenty funkcji.
Pokaże tylko na przykładzie, powiedzmy że mamy jakąś strukturę, następnie tworzymy funkcję która będzie korzystała z danych w tej strukturze i umieszczała obiekty z nich złożone do np. kolejki priorytetowe.
struct Osoba
{
string imie;
string nazwisko;
int wiek;
};
priority_queue<Osoba, vector<Osoba>, KolejnoscSortowania> KolejkaOsob; // nie ma sensu chyba pokazywac co siedzi w KolejnoscSortowania...
void WstawNowaOsobe(KolejkaOsob &kp, const string *imie, const string *nazwisko, int wiek)
{
Osoba nowaOsoba;
nowaOsoba.imie = imie;
nowaOsoba.nazwisko = nazwisko;
nowaOsoba.wiek = wiek;
}
Pytanie:
Dlaczego stosując WSKAŹNIK NA TYP STRING, typu string dostaję błąd kompilatora:
invalid conversion from 'const string* {aka const std::basic_string<char>*{' to 'char' [-fpermissive];
Używając referencji zamiast wskaźnika nie dostaje tego błędu i wszystko się kompiluje:
void WstawOsobe(KolejkaOsob &kp, const string &imie, const string &nazwisko, int wiek);
to się kompiluje.
Tak samo jak to:
void WstawOsobe(KolejkaOsob &kp, const char *imie, const char *nazwisko, int wiek);
Tutaj też używam wskaźnika tylko że na tablicę znaków i działa, dlaczego nie działa gdy tworzę wskaźnik na string ?
Przecież typy się zgadzają, imie i nazwisko są typu string -> tworzę wskaźnik typu string do zmiennych typu string i nie działa...
Jakieś dokładne wytłumaczenie błędu logicznego albo wyjaśnienie w czym tkwi błąd było by na prawdę pomocne.