Luc*_*ore 5 c++ refactoring namespaces using-directives forward-declaration
我原来的类结构类似于:
//def.h
namespace A
{
struct X {};
}
Run Code Online (Sandbox Code Playgroud)
并在需要时转发声明:
//file that needs forward declarations
namespace A { struct X; }
Run Code Online (Sandbox Code Playgroud)
经过一些重构后,X被移动到不同的命名空间,但是为了保持旧代码"工作" using指令的使用:
//def.h
namespace B
{
struct X {};
}
namespace A
{
using ::B::X;
}
Run Code Online (Sandbox Code Playgroud)
现在我们可以访问保持旧语法的同一个类A::X,但前向声明会导致错误.第二个问题是我得到的错误消息并未指向前向声明的位置,并且查找/替换前向声明非常耗时.
现在我解决了问题(困难的方法).
处理这种情况的最佳方法是什么?
IMO,using根本不应该存在,并且所有使用的代码都X应该被重构以容纳新的命名空间(这是一个解决方案),但不幸的是,这不是一个选项.
实际代码要复杂得多,这是一个简化的例子.
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |