如果在头文件中有函数的内联定义,并且想要将函数定义体移出标题并转换为.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)
这不起作用:编译器将在重新定义类时看到这一点.我担心没有办法解决这个问题,这是语言的一部分.
[ps:我知道这些工作很乏味,但我们都必须在某个时间做这些工作.如果它是一项大工作,你可以考虑编写一个脚本来为你做这件事,但它真的必须是一个很大的工作,以证明努力imho,解析C++并不好玩]