2012-03-20 4 views
2

J'espérais que quelqu'un puisse m'aider avec un petit problème J'ai du mal à comprendre en C++.Déclaration de type déclaration personnalisée

Si je crée un ENUM privé au sein d'une classe dans un fichier d'en-tête (Example.h) comme indiqué ci-dessous:

class Example 
{ 
    private: 
     enum ValueType 
     { 
      INTEGER, 
      BOOLEAN, 
      BLOB, 
      UNKNOWN 
     }; 
} 

Alors, comment puis-je accéder à ces valeurs à partir d'un fichier source (méthode privée) pour être utilisé comme un type de retour (Example.cpp)

#include "Example.h" 

... 

ValueType // <-- How can I declare this correctly? compiler complains 
Example::returnMyType(const ValueType p_valueType) 
{ 
    switch(p_valueType) 
    { 
     case INTEGER; 
     return "INTEGER"; 
     break; 
    ... 
    ... 
} 

Je ne suis pas sûr comment déclarer ce que le type de retour.

Aussi je sais que cette fonction est inutile mais c'est seulement pour faire passer le concept que j'essaie de comprendre.

Je me demandais aussi comment accéder à ces valeurs depuis l'état de commutation?

#include "Example.h" 

... 

ValueType // <-- How can I declare this correctly? compiler complains 
Example::returnMyType(const ValueType p_valueType) 
{ 
    switch(p_valueType) 
    { 
     case Example::BLOB; // <-- Is this how to access 
     return "INTEGER"; 
     break; 
    ... 
    ... 
} 
+0

oui tous sont privés –

Répondre

5

Vous devriez écrire que:

Example::ValueType Example::returnMyType(const ValueType p_valueType) 
{ 
    //... 
} 

C'est, vous avez à utiliser Example::ValueType à l'extérieur de la classe, lors de la définition des fonctions des membres et des fonctions membres.

-

De votre commentaire:

I see, it the enum were public would this also be the case?

Oui. Peu importe si c'est public ou private.

Accessibilité (publique, protégé et privé) ne détermine qui est autorisé à accéder, il ne détermine pas comment d'accès.

+0

Je vois, l'énumération était publique serait-ce aussi le cas? –

+0

@aliaserror: Oui. Peu importe si c'est public ou privé. 'public' ou' private' ne détermine que ** qui ** est autorisé à accéder, il ne détermine pas ** comment ** accéder. – Nawaz

+0

je vous remercie beaucoup –