我在一篇文章中遇到了以下代码
struct entire_program
{
struct B;
struct A
{
B *bbb;
void Aa() { B bb; bb.Bb(); };
};
struct B
{
A aaa;
void Bb() { A aa; aa.Aa(); };
};
};
为什么在这种情况下允许我调用方法Bb()
,但是如果我更改struct entire_program
它namespace entire_program
会产生编译器错误?
我已经读过这个问题,我要问的是:如果可以在类/结构/联合中调用尚未定义的方法,为什么命名空间不能以相同的方式工作?我对这种行为背后的动机很感兴趣。
Programmers.SE 上的相关问题(针对那些对文章中介绍的编码风格感兴趣的人)