2011-11-22 20 views

risposta

46

Creare un file separato chiamato utility.hpp e mettere tutte le dichiarazioni di funzioni in esso, preferibilmente con il proprio spazio dei nomi che potrebbero essere solo utility, e poi mettere le definizioni in utility.cpp. Se una delle funzioni di utilità è un modello di funzione, devi inserire la definizione nell'intestazione stessa.

Evitare di definire l'utilità class e inserirvi tutte le funzioni di utilità come membri static. Questa è seriamente una cattiva idea. Una delle ragioni per cui ciò è negativo, è che non può avvantaggiarsi di Argomento Nome dipendente Ricerca (ADL).

Utilizzare invece namespace.

Esempio,

//utility.hpp 

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

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

E poi,

//utility.cpp 

#include "utility.hpp" 

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

Tranne; nominare le classi util.h \ cpp e il namespace util; è più conveniente =) –

+0

Inoltre, non è necessario il prefisso 'utility_' nel nome della funzione. Questo è lo spazio dei nomi per –

+0

@VJo: Ovviamente, non intendevo, la funzione dovrebbe essere preceduta da 'utility_'. Ma a quanto pare, potrebbe confondere i lettori (soprattutto i neofiti). Così ho modificato il mio post. – Nawaz

-1

Creare una classe di utilità separata con util.h (dichiarazioni) e Util.cpp con l'implementazione. Si potrebbe anche andare oltre avendo un'interfaccia di utilità, ma dipende.

+5

* la classe di utilità * è una cattiva idea. – Nawaz

0

potresti voler controllare lo google styleguide for c++ per alcuni utili suggerimenti su questo argomento ... tuttavia: ci sono molti styleguides in quanto puoi fare le cose in molti modi più o meno utili ... la pratica migliore è scegliere uno styleguide quindi attenersi ad esso per l'intero progetto per coerenza ... (a meno che tu/i tuoi team non vi sentiate molto a disagio a riguardo ...)

+3

Non ho letto la guida di stile di Google a questo particolare riguardo, ma in generale non è una buona guida di stile in C++. –

+0

l'ho trovato molto interessante in quanto c'è una spiegazione sui pro e contro di ogni argomento ... ma sono aperto ai suggerimenti se riesci a fornire una styleguide migliore ;-) – xmoex

+2

La guida di stile per gli occhiali è molto male –

Problemi correlati