Or maybe reading 0 is correct, if one takes the analogy with undefined functions one step further:
class B { extern int i; void f(); void x() {werror ("i: %O, f: %O\n", i, f);} }
int main() { B()->x(); // Writes "i: 0, f: 0" }
But I still would rather have B::i an alias for A::i (and i) in C in my first example.