+#include <stdio.h>
+
struct B { int i, j; };
struct D : public B {};
int D::*di = &D::i;
int D::*dj = &D::j;
+int main() {
+ D d;
+ d.i = d.j = 0;
+ d.*di = 4;
+ d.*dj = 7;
+
+ printf("%d %d\n", d.i, d.j);
+
+ return 0;
+}
-struct B { int i(); int j(); };
+#include <stdio.h>
-void foo(int (B::*Fn)());
+struct B {
+ int X;
+ void i() {
+ printf("i, %d\n", X);
+ }
+ void j() {
+ printf("j, %d\n", X);
+ }
+};
-void test() {
- foo(&B::i);
- foo(&B::j);
+void foo(int V, void (B::*Fn)()) {
+ B b; b.X = V;
+ (b.*Fn)();
+}
+
+int main() {
+ foo(4, &B::i);
+ foo(6, &B::j);
+ foo(-1, &B::i);
+ return 0;
}