在.cpp文件中,使用"class Foo {void method(){}};"定义方法 而不是"void Foo :: method(){}"?

Den*_*nis 0 c++

如果在头文件中有函数的内联定义,并且想要将函数定义体移出标题并转换为.cpp文件,则不能只按照定义的方式剪切和粘贴函数.标题; 你必须从这里转换语法:

class Foo
{
void method1() { definition(); }
void method2() { definition(); }
void method3() { definition(); }
};
Run Code Online (Sandbox Code Playgroud)

对此:

void Foo::method1() { definition(); }
void Foo::method2() { definition(); }
void Foo::method3() { definition(); }
Run Code Online (Sandbox Code Playgroud)

编辑:只是想指出我希望避免的是必须在每个方法名称前面键入类名.这似乎是一件小事,但当你将大量的函数定义移出标题并进入cpp文件时,它就会增加.当返回类型特别复杂时,您必须找到每个返回类型结束并且每个方法名称开始的行.

所以我的问题是,我是否必须像上面的第二段代码那样做?如果我这样做会是什么(符合以下标准的C++?):

在Foo.h中:

class Foo
{
void method1();
void method2();
void method3();
};
Run Code Online (Sandbox Code Playgroud)

在Foo.cpp中:

#include "Foo.hpp"    
class Foo
{
void method1() { definition(); }
void method2() { definition(); }
void method3() { definition(); }
};
Run Code Online (Sandbox Code Playgroud)

jkp*_*jkp 5

这不起作用:编译器将在重新定义类时看到这一点.我担心没有办法解决这个问题,这是语言的一部分.

[ps:我知道这些工作很乏味,但我们都必须在某个时间做这些工作.如果它是一项大工作,你可以考虑编写一个脚本来为你做这件事,但它真的必须是一个很大的工作,以证明努力imho,解析C++并不好玩]

  • "我知道,我会使用正则表达式!" (4认同)
  • "然后我有两个问题!" (3认同)