Przeładowanie operatora ()

Odpowiedz Nowy wątek
2014-12-29 16:48
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; // ????

Pozostało 580 znaków

2014-12-29 16:50
0

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

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

Pozostało 580 znaków

2014-12-29 17:14
0

Po prostu chce wiedzieć :)

Pozostało 580 znaków

2014-12-30 19:23
0

Nikt nie wie ?

Pozostało 580 znaków

2014-12-30 19:30
0
#include <iostream>
using namespace std;
 
#define ITS_NOTHING() 0,
 
class Urzadzenie{};
 
int main() {
    Urzadzenie syrena();
    ITS_NOTHING
 
    // \/ \/ \/
    ()syrena;
    // /\ /\ /\
    return 0;
}

Pozostało 580 znaków

2014-12-31 18:34
0

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

edytowany 2x, ostatnio: killermannnnn, 2014-12-31 18:35

Pozostało 580 znaków

2014-12-31 18:37
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().

Pozostało 580 znaków

2014-12-31 18:40
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;
}

Pozostało 580 znaków

2014-12-31 18:44
0

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

edytowany 2x, ostatnio: Tumeg, 2014-12-31 18:46

Pozostało 580 znaków

2014-12-31 19:01
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;

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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