C++ продолжает удивлять меня. Сегодня я узнал об операторе -> *. Он перегружен, но я не знаю, как его вызывать. Мне удается перегрузить его в моем классе, но я не знаю, как его назвать.Что такое -> * оператор в 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;
}
редактировать:
Благодаря ответу. Для вызова перегруженной функции я пишу
void main()
{
A a;
A*p = &a;
a + 2;
a->a;
A::a_func f = &A::ff;
(&a->*f)();
(a->*f); //this
}
простой: 'а -> * 42;' – sellibitze
Нет, вы не вызвать перегруженный оператор в этом случае. То, что вы называете, является встроенным. Ваш перегруженный оператор требует в качестве второго параметра 'int'. – AnT
@AndreyT: Обновление структуры для отражения нового основного. – 2009-11-22 20:07:41