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
}
int
作为第二个参数。 - AnT stands with Russiaa->*42
来完成,而不需要进行任何更新。 - AnT stands with Russia