4

以下のコードを理解しようとすると混乱しました。誰かがこのハックを説明できますか?

a.*b

または、aがクラスへのポインタである場合:

a->*b
4

1 に答える 1

10

これらの演算子は両方とも、メンバーへのポインターを逆参照するために使用されます。通常のポインターとは異なり、メンバーへのポインターはそれ自体で逆参照することはできませんが、その型の実際のオブジェクトに適用する必要があります。これらの二項演算子は、左側のオブジェクト (またはポインター) を選択し、メンバーへのポインターをそれに適用します。

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
}
于 2012-08-23T19:15:18.120 に答える