przeładowanie operatora w C++ dla funkcji klasy

0

Witam,
mam pytanie: przeładowanie operatora to oddzielna funkcja. Zastanawiam się jednak, czy jest możliwość by przeładować operator dla utworzonej w klasie funkcji tj. np. jeśli mamy klasę:

class klasa{
public:
void funkcja(int x);
}

To czy jest możliwość by funkcję wywoływać np. tak: obiekt.funkcja >> x zamiast obiekt.funkcja(x)?
Z góry dzięki za odpowiedź.

0

https://ideone.com/NtKN09

#include <iostream>

class Funkcja
{
public:
    void operator()(int x)
    {
        std::cout << x << "\n";
    }

    void operator >>(int x)
    {
        operator()(x);
    }
};

class Klasa
{
public:
    Funkcja funkcja;
};

int main()
{
    Klasa klasa;

    klasa.funkcja(5);
    klasa.funkcja >> 6;
}

Jednak szczerze mówiąc odradzam takie rozwiązanie, bo wprowadzasz tym tylko niepotrzebne zamieszanie.

0

dzięki, o tym nie pomyślałem :) - ale rzeczywiście chyba odejdę od tego pomysłu

0

Z tym że czasami ma sens zamienić:
obiekt.funkcja(x);
na:
obiekt.fun >> x >> kcja;
chociażby ze względu na przeładowania: obiekt.funkcja(x,y); obiekt.funkcja(x,y,z);

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