2010-12-06 19 views
0

Considérons je le prototype de fonction suivante:Syntaxe Prototyping Fonction dans tête des fichiers

void MyFunction(int MyParameter);

Avec la définition suivante:

void MyFunction(int MyParameter) 
{ 
    // Do stuff here. 
} 

Où devraient-ils être chacun mis si j'ai un en-tête fichier (fonction main) avec un espace de noms? Est-ce que le prototype va dans l'espace de noms et la définition à l'extérieur? Ou vont-ils tous les deux?

Répondre

1

Si vous choisissez d'avoir un espace de noms, les deux devraient être à l'intérieur:

.h:

namespace MyNameSpace { 
void MyFunction(int MyParameter); 
} 

Cpp:

void MyNameSpace::MyFunction(int MyParameter) 
{ 
    // Do stuff here. 
} 
+0

Sur une sidenote sans rapport avec, pourquoi le second fichier doit être un .cpp? – Maxpm

+0

Il ne doit pas être ".cpp". Ce doit être quelque chose reconnaissable par votre compilateur C++. Comme .c, .cpp ou .cxx pour les exemples –

+0

Est-ce juste pour le débogage (voir s'il y a des erreurs de syntaxe), ou y a-t-il une autre raison? – Maxpm

0

Ils ont tous deux être dans l'espace de noms

1

Si votre prototype est pas dans l'espace de noms, alors vous ne devez pas mettre la définition dans l'espace. Si le prototype est dans un espace de noms, la définition doit être dans le même espace de noms.