如何使CLion在.cpp文件中插入生成的代码....

Que*_*mer 6 c++ clion

在CLion中生成代码总是导致在头文件中实现这些方法,我总是被告知他们应该进入.cpp文件,我怎么能改变这种行为,甚至可能呢?

示例:

在包含main.cpp和测试类(test.hpp和test.cpp)的项目中.

CMake文件如下:

cmake_minimum_required(VERSION 3.3)
project(testClion)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp
                test.cpp
                test.hpp)
add_executable(testClion ${SOURCE_FILES})
Run Code Online (Sandbox Code Playgroud)

(注意这是clion提供的默认文件,我没有改变任何东西)

test.hpp

#ifndef TESTCLION_TEST_HPP
#define TESTCLION_TEST_HPP

class test
{
 protected:
  int test;
};


#endif //TESTCLION_TEST_HPP
Run Code Online (Sandbox Code Playgroud)

TEST.CPP

#include "test.hpp"
Run Code Online (Sandbox Code Playgroud)

在test.hpp或test.cpp中按ALT + INSERT并生成getter/setter只会更改test.hpp:

test.hpp

#ifndef TESTCLION_TEST_HPP
#define TESTCLION_TEST_HPP

class test
{

 public:
  int getTest() const
  {
    return test;
  }
  void setTest(int test)
  {
    test::test = test;
  }
 protected:
  int test;
};


#endif //TESTCLION_TEST_HPP
Run Code Online (Sandbox Code Playgroud)

whn*_*whn 3

好的,我有一个实际的解决方案给你。我遇到了同样的问题,alt + enter我只能按方法自动生成。您可以通过使用来解决这个问题alt + insert。这将打开 Clion 中的生成菜单。从这里选择generate definitions将弹出一个菜单,您可以在其中选择所有定义或选择您实际想要生成的几个定义。

Clion 足够聪明,可以知道您是否已经生成了定义,因此您不必担心此处的重复定义。然而,我发现使用 QT 时,某些类具有元对象编译器重写,这些重写将显示在此处,因此我确保在创建定义时不要选择这些,但对于大多数正常用例,选择列表中的每个元素只会generate definitions生成内容您实际上已经在标头中定义了。

请注意,您还可以右键单击您的班级名称并转到Generate...,您将获得相同的选项。

编辑:请注意,如果您确实想要原作者的行为,则进入生成定义功能选择屏幕后,可以选择“就地生成”选项