Przeładowanie operatora ()

0

Mam taki program z przeładowaniem operatora ():

#include <iostream>

using namespace std;

class Urzadzenie
{
    public:
    string dzwiek;
    Urzadzenie (string a): dzwiek(a) {}

    void operator()()
    {
        cout<<dzwiek<<endl;
    }
};

int main()
{
    Urzadzenie syrena("auauau");
    syrena();
} 

Czy mogę go zmodyfikować tak abym mógł wywołać tą sama operacje z operatorem po lewej stronie ?

()syrena; // ????
0

zapewne sie da, ale musialbys uzywac jakis dziwnych szablonow/makr.

na 99% nie jest Ci to potrzebne, na co Ci takie cos?

0

Po prostu chce wiedzieć :)

0

Nikt nie wie ?

0
#include <iostream>
using namespace std;

#define ITS_NOTHING() 0,

class Urzadzenie{};

int main() {
    Urzadzenie syrena();
    ITS_NOTHING

    // \/ \/ \/
    ()syrena;
    // /\ /\ /\
    return 0;
}
0

Nie rozumiem jak to ma działać ...

0
killermannnnn napisał(a):

Nie rozumiem jak to ma działać ...

Nie musisz rozumieć.

Czy mogę go zmodyfikować tak abym mógł wywołać tą sama operacje z operatorem po lewej stronie ?

Nie. W moim przykładzie nie ma modyfikacji ani przeładowania operatora().

0

Musze rozumieć. Na tym polega nauka.

Czy ten program jest dobrze zrobiony? Chodzi mi o to, żeby działał tak samo jak ten z pierwszego postu.

 #include <iostream>

using namespace std;

#define ITS_NOTHING() 0,

class Urzadzenie
{
    public:
    Urzadzenie () {}

    void operator()()
    {
        cout<<"auau"<<endl;
    }
};

int main()
{
    Urzadzenie syrena();
    ITS_NOTHING
    ()syrena;
}
0

Poczytaj sobie o funktorach. Zrobić to, co chcesz można w zwykłej metodzie przyjmującej jako argument ten "dźwięk".

0

ITS_NOTHING() to tak naprawdę 0,
ITS_NOTHING () to to samo
ITS_NOTHING () to to samo
syrena to obiekt (wartość).

ITS_NOTHING
()syrena;

to 0, syrena;

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