Witam!
Podczas pisania programu obsługującego pewną klasę napotkałem błąd kompilatora: dwuargumentowy operator << nie znaleziono żadnego operatora, który pobiera operand z prawej strony typu "overloaded-function" (lub nie istnieje akceptowalna konwersja).
Działanie programu polega na przekazaniu obiektowi własnoręcznie napisanego manipulatora, czego skutkiem będzie wykonanie pewnego kodu.
Klasa:
class Drop
{
public:
Drop() { };
~Drop() { };
Drop & operator <<( ostream & os )
{
//...
return * this;
}
};
Manipulator:
ostream & drop( ostream & os )
{
return os;
}
Main:
int main()
{
Drop d;
d << drop;
}
Niestety nie mogę i nie chcę zmieniać formy z "main" (wiem, że da się to zrealizować w inny sposób, lecz chcę poznać tajemnicę tego błędu)
Czy mógłby ktoś pomóc mi rozwiązać problem lub chociaż pomóc zrozumieć o co w tym chodzi ? Z góry dziękuję za odpowiedzi.