以下のコードを理解しようとすると混乱しました。誰かがこのハックを説明できますか?
a.*b
または、a
がクラスへのポインタである場合:
a->*b
これらの演算子は両方とも、メンバーへのポインターを逆参照するために使用されます。通常のポインターとは異なり、メンバーへのポインターはそれ自体で逆参照することはできませんが、その型の実際のオブジェクトに適用する必要があります。これらの二項演算子は、左側のオブジェクト (またはポインター) を選択し、メンバーへのポインターをそれに適用します。
struct test {
int a, b, c;
};
int main() {
int test::*ptr;
ptr = &test::a;
test t;
t.*ptr = 5; // set t.a to 5
ptr = &test::b;
test *p = &t;
p->*ptr = 10; // set t.b to 10 through a pointer
}