Przeładowanie operatora <<, smart pointers

0

Witam
mam problem:

#include <iostream>
#include <memory>
#include <string>

using namespace std;

struct osoba
{
	string imie;
	string nazwisko;
	int wiek;
	osoba() {};
	osoba(string imie, string nazwisko, int wiek) : imie(imie), nazwisko(nazwisko), wiek(wiek){};
};

void dodaj(unique_ptr<osoba>&w, string imie, string nazwisko, int wiek)
{
	w->imie = imie;
	w->nazwisko = nazwisko;
	w->wiek=wiek;
}

ostream&operator <<(ostream&wyjscie, osoba const* o)
{
	wyjscie << o->imie << o->nazwisko << o->wiek;
	return wyjscie;
}

int main()
{
	make_unique<osoba>();
	unique_ptr<osoba> czlowiek{ new osoba };
	dodaj(czlowiek, "Marian", "Kowalski", 19);
	clog << czlowiek;
	
}

Nie wiem gdzie jest błąd ale kompilator protestuje komunikatem: "no operator "<<" matches these operands"
nie wiem co powoduje ten błąd, może ktoś mi pomóc?

2

Na przyszłość podawaj pełne komunikaty błędów.

Na szczęście są święta i Szklana Kula działa: clog << czlowiek; oczekuje std::ostream& operator<<(std::ostream&, std::unique_ptr<osoba> const&), a takiej funkcji nie masz.

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