我的原始类结构类似于:
//def.h
namespace A
{
struct X {};
}
需要在必要的地方添加前向声明:
//file that needs forward declarations
namespace A { struct X; }
在进行了一些重构后,X
被移动到了另一个命名空间中,但为了使旧代码“工作”,使用了using
指令:
//def.h
namespace B
{
struct X {};
}
namespace A
{
using ::B::X;
}
现在我们可以继续使用旧的语法
A::X
来访问相同的类,但是前向声明会导致错误。第二个问题是我收到的错误信息没有指出前向声明所在的位置,查找和替换前向声明非常耗时。目前,我通过一种(困难)的方式解决了这个问题。
如何处理这种情况最好的方法?
在我看来,
using
根本不应该存在,并且所有使用X
的代码都应该重构以适应新的命名空间(这是一种解决方案),但不幸的是这并不可行。实际代码要复杂得多,这只是一个简化的例子。
X
是被移动到已存在的命名空间B
中,还是命名空间A
被重命名为B
?如果是后者,您是否可以使用命名空间别名? - TemplateRexA
仍然存在。 - Luchian Grigore