【问题标题】:CLion new C++ Class file templateCLion 新 C++ 类文件模板
【发布时间】:2019-10-08 16:32:11
【问题描述】:

CLion有文件模板生成C++类,生成源文件和头文件。在我的项目中,我有具有相同代码部分的处理程序类,我想通过文件模板生成它们。而我创建的模板不能这样做:

  1. 为 MyHandlerClass 类设置文件名我想要 my_handler_class.cpp 和 .hpp

  2. 我想从一个类名生成2个文件头和源,不知道怎么做。

  3. 我也想要 MyClass -> my-class 之类的字符串,找到函数 $lowercaseAndDash($NAME) 但不知道为什么它不起作用

我有标题模板:

#pragma once
// includes

namespace handlers {

class ${NAME}: public Parent {
  public:
  // methods
};

}

我试图通过这样设置文件名来解决第一个问题:#set ($FILE_NAME = "test_class.hpp")。但是我不知道将 CamelCase 设置为蛇形,这不起作用。

也可以在 docs 函数中找到蛇案例,但它在文件模板中对我不起作用。

【问题讨论】:

    标签: c++ ide clion file-templates


    【解决方案1】:
    1. 无法从模板更改文件名。创建 C++ 类时,设置类名选择文件名编码。当您从模板创建文件时,其使用您的文件名保存文件。我以这种方式找到了解决方案,输入 file_name(在蛇形案例中),并使用 Velocity 创建 CamelCaseName 作为类名:

      #set( $CamelCaseName = "" )

      #set( $part = "" )

      #foreach($part in $NAME.split("_"))

      #set( $CamelCaseName = "${CamelCaseName}$part.substring(0,1).toUpperCase()$part.substring(1).toLowerCase()" )

      #end

    2. 不可能像 C++ 类模板那样一键生成 2 个文件。我必须创建模板,并同时使用它们。

    3. 此功能适用于 liveTemplates,对于 FileTemplate 我使用了速度:#set( $NeededString = $NAME.replaceAll('_', '-') )

      要包含来自 cpp 的头文件,请使用 #[[#include]]# "${NAME}.hpp"

    【讨论】:

      猜你喜欢
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多