2011-11-22 83 views
16

我有3個小的(每行15個)實用功能,最好的方法來組織它們?把它們放在自己的名字空間中的頭文件中?在C++中組織實用功能

回答

46

創建一個名爲utility.hpp一個單獨的文件,並把它的所有函數聲明,最好是在其自己的命名空間,其可能只是utility,然後把定義中utility.cpp。如果任何實用函數都是函數模板,則必須將該定義放在頭本身中。

避免定義實用程序class並將其中的所有實用函數作爲static成員。這是一個壞主意。它不好的一個原因是它不能利用參數相關名稱查找(ADL)。

改爲使用名稱空間。

實施例,

//utility.hpp 

namespace utility 
{ 
    void function1(); 
    void function2(); 
    void function3(); 

    template<typename T> 
    void function4() 
    { 
     //function template definition should be here! 
    } 
} 

然後,

//utility.cpp 

#include "utility.hpp" 

namespace utility 
{ 
    void function1() 
    { 
     //code 
    } 
    void function2() 
    { 
     //code 
    } 
    void function3() 
    { 
     //code 
    } 
} 
+0

除了;命名類util.h \ cpp和命名空間util;它更方便=) –

+0

另外,在函數名稱中不需要'utility_'前綴。這就是命名空間的用途 –

+0

@VJo:當然,我不是說,函數應該以'utility_'作爲前綴。但看起來,它可能會混淆讀者(尤其是新手)。所以我編輯了我的帖子。 – Nawaz

-1

創建Util.h(聲明)和Util.cpp一個單獨的工具類與實現。您還可以通過使用實用程序界面來進一步考慮它,但取決於。

+5

*工具類*是一個壞主意。 – Nawaz

0

你可能想要檢查google styleguide for c++這個主題上的一些有用的提示......但是:有很多styleguides,因爲你可以用很多或多或少有用的方式做事情......最好的做法是選擇一個styleguide和然後堅持爲整個項目的一致性...(除非你/你的團隊變得非常不舒服...)

+3

我還沒有閱讀過這方面的谷歌風格指南,但總的來說它不是一個很好的C++風格指南。 –

+0

我發現它非常有趣,因爲有每個主題的利弊解釋......但如果你可以提供更好的風格指南,我願意提供建議;-) – xmoex

+2

護目鏡風格指南非常糟糕 –