CLion 2025.2 Help

CLion Nova 重构

CLion Nova 提供以下额外的重构功能:

引入字段

此重构基于选定的表达式创建一个新字段,用该表达式或构造函数对其进行初始化,并用新引入的字段的引用替换表达式的出现。

要调用此重构,请按 Ctrl+Alt+F

在下面的示例中,我们使用此重构将两个相同字符串的出现替换为一个新的私有字段,并从现有构造函数中对其进行初始化:

#include <exception> #include <iostream> class ErrorHandler { ErrorHandler() {} public: void logError(std::exception&amp; e) { auto errorLogFIle = fopen("log.txt", "w"); fprintf(errorLogFIle, "Something has failed: %s", e.what()); fclose(errorLogFIle); } void printError(std::exception&amp; e) { printf("Something has failed: %s", e.what()); } };
#include <exception> #include <iostream> class ErrorHandler { ErrorHandler(): error_message("Something has failed: %s") {} public: void logError(std::exception&amp; e) { auto errorLogFIle = fopen("log.txt", "w"); fprintf(errorLogFIle, error_message, e.what()); fclose(errorLogFIle); } void printError(std::exception&amp; e) { printf(error_message, e.what()); } private: const char* error_message; };

引入命名空间别名

此重构帮助您为命名空间的使用创建一个命名空间别名,并用该别名替换当前选定的使用或当前文件中的所有使用。 根据选定的用法,命名空间别名会在尽可能接近用法的作用域内声明。

调用引入命名空间别名

  1. 将插入符号放在命名空间的使用处,按 Ctrl+Alt+Shift+T ,然后在“重构此”弹出窗口中选择 引入命名空间别名

    如果文档中存在命名空间使用的多个出现,您可以选择替换当前使用或所有使用。

在下面的示例中,我们使用此重构为 SpaceOne::SpaceTwo 命名空间添加一个命名空间别名。

namespace SpaceOne { namespace SpaceTwo { int ten = 10; inline void foo() { // do something } } } inline int test() { SpaceOne::SpaceTwo::foo(); return SpaceOne::SpaceTwo::ten; }
namespace SpaceOne { namespace SpaceTwo { int ten = 10; inline void foo() { // do something } } } inline int test() { namespace s_two_alias = SpaceOne::SpaceTwo; s_two_alias::foo(); return s_two_alias::ten; }

引入使用枚举

C++20 using enum 语法允许您从目标枚举中添加所有枚举器。 因此,使用其成员枚举器时,您可以省略枚举名称的重复。

调用引入使用枚举

  1. 将插入符号放在命名空间的使用处,按 Ctrl+Alt+Shift+T ,然后在“重构此”弹出窗口中选择 引入使用枚举

    CLion Nova 还会检测 using enum 适用的代码片段,并在 Alt+Enter 菜单中建议进行重构:

    引入使用枚举意图操作

    如果文档中有多次出现的枚举使用,请选择替换当前使用或所有使用:

    引入使用枚举的多个出现
  2. CLion Nova 将就地执行重构:

    引入使用枚举结果

转换为作用域枚举

转换为作用域枚举 重构帮助您将 C 风格的枚举声明转换为 C++11 作用域枚举。

要调用它,请将插入符号放在枚举器处,按 Ctrl+Alt+Shift+T 并选择 转换为作用域枚举

最后修改日期: 2025年 9月 26日