如何使用 Eclipse CDT 自动将类从命名空间中取出?
Posted
技术标签:
【中文标题】如何使用 Eclipse CDT 自动将类从命名空间中取出?【英文标题】:How can I take a class out of a namespace automatically with Eclipse CDT? 【发布时间】:2021-05-10 00:21:12 【问题描述】:我有一个类 A,它位于 C++ 中的命名空间 N 内,因此我可以在代码中使用 N::A 引用它。
我需要在 Eclipse CDT 中将该类从命名空间 N
中取出。
当然,我还需要在代码库中编辑所有使用N::A
表示法引用此类的事件,以便删除引用命名空间N
的部分。
我想知道在 Eclipse 中是否有一种方法可以自动执行此操作,这样我就不必在代码中的任何地方手动执行此操作。
【问题讨论】:
我不知道(但怀疑)这是否是 Eclipse CDT 的自动化重构任务。通常的方法(这符合 IMO 的有效用例)是为命名空间前缀定义一个宏,并在预处理阶段有条件地替换它。必须始终如一地完成,当然需要完全重新编译所有受影响的代码。 我会尝试通过文本编辑器的替换所有功能将所有出现的“N::A”替换为“A” 【参考方案1】:一种可行的方法是使用using N::A
将类A
加载到全局命名空间。然后您可以使用 Eclipse CDT 的find and replace 功能将所有出现的N::A
编辑为A
。
您可以将using N::A
仅放置在您希望类位于全局命名空间中的文件中,或者您可以在类头文件的末尾定义它,以便它会自动在每个文件中定义包括班级。以这种方式使用它意味着只有 A
类被转储到全局命名空间,而使用 using namespace N;
将该命名空间的每个内容转储到全局命名空间。
【讨论】:
以上是关于如何使用 Eclipse CDT 自动将类从命名空间中取出?的主要内容,如果未能解决你的问题,请参考以下文章