如果您在頭文件中內聯定義了函數,並且想要將函數定義主體移出標題並移至.cpp文件中,則不能只按照原樣剪切和粘貼函數在標題中定義;你必須從這個語法轉換:在.cpp文件中,用「class Foo {void method(){}}」定義方法;「而不是「void Foo :: method(){}」?
class Foo
{
void method1() { definition(); }
void method2() { definition(); }
void method3() { definition(); }
};
要這樣:
void Foo::method1() { definition(); }
void Foo::method2() { definition(); }
void Foo::method3() { definition(); }
編輯:只是想指出的是什麼,我希望避免被其前面鍵入類名每個方法名稱。它可能看起來很小,但是當你將許多函數定義從頭文件移出並存入cpp文件時,它會相加。而當返回類型特別複雜時,您必須找到每行返回類型結束的位置,並且每個方法名稱都開始。
所以我的問題是,我必須像上面第二塊代碼那樣做嗎?如果我這樣做什麼(是以下符合標準的C++?):
foo.h中:
class Foo
{
void method1();
void method2();
void method3();
};
在Foo.cpp中:
#include "Foo.hpp"
class Foo
{
void method1() { definition(); }
void method2() { definition(); }
void method3() { definition(); }
};
「我知道,我會用正則表達式!」 – 2009-12-08 01:43:28
@anon:... LOL:D – jkp 2009-12-08 01:44:44
「然後我遇到了兩個問題!」 – KeithB 2009-12-08 02:11:06