C++ überrascht mich weiterhin. Heute habe ich von dem Operator -> * erfahren. Es ist überladbar, aber ich habe keine Ahnung, wie ich es aufrufen soll. Es gelingt mir, es in meiner Klasse zu überlasten, aber ich habe keine Ahnung, wie ich es nennen soll.Was ist -> * Operator in C++?
struct B { int a; };
struct A
{
typedef int (A::*a_func)(void);
B *p;
int a,b,c;
A() { a=0; }
A(int bb) { b=b; c=b; }
int operator + (int a) { return 2; }
int operator ->* (a_func a) { return 99; }
int operator ->* (int a) { return 94; }
int operator * (int a) { return 2; }
B* operator ->() { return p; }
int ff() { return 4; }
};
void main()
{
A a;
A*p = &a;
a + 2;
}
edit:
Dank der Antwort. So rufen Sie die überladene Funktion schreiben i
void main()
{
A a;
A*p = &a;
a + 2;
a->a;
A::a_func f = &A::ff;
(&a->*f)();
(a->*f); //this
}
einfach: 'a -> * 42;' – sellibitze
Nein, Sie nicht die überladenen Operator in diesem Fall nennen. Was Sie anrufen, ist der eingebaute. Ihr überladener Operator benötigt einen "int" als zweiten Parameter. – AnT
@AndreyT: Aktualisierung der Struktur, um die neue Hauptversion widerzuspiegeln. –