在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)
好的,我有一个实际的解决方案给你。我遇到了同样的问题,alt + enter我只能按方法自动生成。您可以通过使用来解决这个问题alt + insert。这将打开 Clion 中的生成菜单。从这里选择generate definitions将弹出一个菜单,您可以在其中选择所有定义或选择您实际想要生成的几个定义。
Clion 足够聪明,可以知道您是否已经生成了定义,因此您不必担心此处的重复定义。然而,我发现使用 QT 时,某些类具有元对象编译器重写,这些重写将显示在此处,因此我确保在创建定义时不要选择这些,但对于大多数正常用例,选择列表中的每个元素只会generate definitions生成内容您实际上已经在标头中定义了。
请注意,您还可以右键单击您的班级名称并转到Generate...,您将获得相同的选项。
编辑:请注意,如果您确实想要原作者的行为,则进入生成定义功能选择屏幕后,可以选择“就地生成”选项
| 归档时间: |
|
| 查看次数: |
5712 次 |
| 最近记录: |