Enums: Peuvent-ils faire en .h ou doivent rester en .cpp?
Si j'ai quelque chose comme:
enum
{
kCP_AboutBox_IconViewID = 1,
kCP_AboutBox_AppNameViewID = 2,
kCP_AboutBox_VersionViewID = 3,
kCP_AboutBox_DescriptionViewID = 4,
kCP_AboutBox_CopyrightViewID = 5
};
dans mon .le rpc, peut-il aller dans le .h?
Plus, ce que d'autres moins connus de choses pouvez-vous mettre dans un .h en plus des définitions de classe, les variables, etc, etc
source d'informationauteur user147502
Vous devez vous connecter pour publier un commentaire.
Un .h fichier est essentiellement juste un code qui, au moment de la compilation, est placé au-dessus de tout .rpc (ou .h fichier pour que ce soit), qu'il est inclus dans. Par conséquent, vous POUVEZ simplement placer du code de la .fichier cpp dans le .h et il doit compiler amende.
Cependant, c'est la conception qui est important. Votre code (par exemple, votre enum) DOIT être placé dans le .h fichier si vous avez besoin d'exposer le code que vous êtes, y compris l' .h fichier. Toutefois, si l'enum est seulement spécifique pour le code dans votre en-tête .rpc mise en œuvre, alors vous devriez encapsuler seulement au sein de la .fichier cpp.
N'oubliez pas d'utiliser l'en-tête des gardes dans les en-têtes comme:
Cela vous aide à rester à une définition de la règle lorsque plusieurs en-têtes inclure votre en-tête.
Aussi, ne Jamais avoir:
dans un en-tête car cela peut provoquer une étrange ambiguïté des problèmes.
Oui, votre enum définition peut aller dans votre en-tête (
.h
) fichier. Ne répétez pas la définition dans votre.cpp
fichier.Oui, bien sûr, vous pouvez le mettre dans une .h fichier. Les seules choses qui ne devraient pas aller dans une .h de fichier ce sont des choses qui pourrait poser problème si ils sont inclus dans plus d'un objet, comme la global des initialiseurs d'objets.
En général un enum est destiné à être utilisé comme une définition de type et doit toujours être dans le fichier d'en-tête. Choses à penser sont les portée de.
Si l'enum est juste placé à l'extérieur d'un champ dans l'en-tête, il sera disponible dans le monde entier à quelque chose qui inclut le fichier d'en-tête. Si vous voulez plutôt l'enum uniquement accessible à la classe elle-même, vous pouvez le placer dans la section privée de la classe.
En général, vous ne devriez pas faire l'enum étendue globale, au lieu de cela, vous devez soit mettre dans un espace de noms ou dans la partie publique d'une classe. Ensuite, vous pouvez accéder à l'enum par
Aussi, au passage, les énumérations automatiquement itération les valeurs de la première que vous donnez (ou 0).
Est exactement le même que
Ce n'est pas un problème ou une erreur, il suffit de stylistique vraiment.
Une définition de la règle qui permet à
3.2/5
. Tous les éléments suivants peuvent être mis dans les en-têtes, et être inclus plusieurs fois dans différentes unités de traduction.Les exigences en substance vers le bas pour que chaque définition doit être le même. Notez que si votre type d'énumération lui-même n'a pas de nom, alors il n'est pas couvert par cette règle. Chaque définition dans une autre unité de traduction définit un nouveau type d'énumération alors, et ne rentrera pas en conflit les uns avec les autres.
De les mettre dans l'en-tête est un bon endroit si c'est censé être public. Les mettre dans le fichier d'implémentation est un bon endroit si c'est censé être privé de ce fichier unique. Dans ce dernier cas, les mettre dans une sans nom d'espace de noms, ou de les rendre sans nom (comme c'est le cas avec votre énumération exemple), de sorte qu'il peut pas en conflit avec une autre énumération ayant le même nom.
Je n'ai pas suffisamment d'informations, mais peut-être que vous pouvez déclarer les enum pas seulement dans la .h, mais à l'intérieur de la classe. N'oubliez pas de garder la portée d'une variable à un minimum.
si l'enum est pertinent à une classe particulière, vous devez le déclarer à l'intérieur de la classe.