Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przeciążenie operator<<, własny manipulator strumienia

Ostatnio zmodyfikowano 2020-11-15 19:50
Autor Wiadomość
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:
C/C++
class Drop
{
public:
    Drop() { };
    ~Drop() { };
   
    Drop & operator <<( ostream & os )
    {
        //...
        return * this;
    }
};
Własny manipulator:
C/C++
ostream & drop( ostream & os )
{
    return os;
}
Main:
C/C++
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.
P-177711
pekfos
» 2020-11-15 19:09:41
Sama funkcja drop() wystarczy jako manipulator. Nie musisz robić żadnego przeciążania operatorów.
C/C++
std::cout << drop;
P-177712
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<<.
P-177713
pekfos
» 2020-11-15 19:50:05
Ale niby jak wtedy? Możesz sobie przeciążyć operator dla funkcji innego typu, np
C/C++
#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;
}
P-177714
« 1 »
  Strona 1 z 1