Przeciążenie operator<<, własny manipulator strumienia
Ostatnio zmodyfikowano 2020-11-15 19:50
programistyczny Temat założony przez niniejszego użytkownika |
Przeciążenie operator<<, własny manipulator strumienia » 2020-11-15 18:25:17 Witam! Pisząc program obsługujący pewną klasę na potkał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). Klasa ma na celu przyjąć przez przeciążenie operator<<, własnoręcznie napisany manipulator drop, a następnie wykonać podane instrukcje. Klasa: class Drop { public: Drop() { }; ~Drop() { }; Drop & operator <<( ostream & os ) { return * this; } };
Własny manipulator: ostream & drop( ostream & os ) { return os; }
Main: int main() { Drop d; d << drop; }
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. |
|
pekfos |
» 2020-11-15 19:09:41 Sama funkcja drop() wystarczy jako manipulator. Nie musisz robić żadnego przeciążania operatorów. |
|
programistyczny Temat założony przez niniejszego użytkownika |
» 2020-11-15 19:18:23 Wiem o tym rozwiązaniu, jednak zależy mi na tym by było to zrealizowane poprzez przeciążenie operator<<. |
|
pekfos |
» 2020-11-15 19:50:05 Ale niby jak wtedy? Możesz sobie przeciążyć operator dla funkcji innego typu, np #include <iostream>
void test( std::ostream & os ) { os << "test"; }
std::ostream & operator <<( std::ostream & os, void( * f )( std::ostream & ) ) { f( os ); return os; }
int main() { std::cout << test; } |
|
« 1 » |