2015-10-06 1 views
1

Je dispose d'un fichier d'en-tête et il y a une variable privée dans ceVariable privé en-tête

class RoutingTableEntry 
{ 
public: 
void SetFlag (RouteFlags flag) { m_flag = flag; } 
    RouteFlags GetFlag() const { return m_flag; } 

private: 
    RouteFlags m_flag; 

} 
    enum RouteFlags 
    { 
     VALID = 0,   //!< VALID 
     INVALID = 1,  //!< INVALID 
     IN_SEARCH = 2,  //!< IN_SEARCH 
    }; 

J'ai besoin de la valeur de m_flag dans une autre classe. Ce .cpp a le fichier d'en-tête dans lequel la variable est déclarée.

Mon doute est que je peux utiliser m_flag de cette classe, comme par exemple.

test.Report (m_flag) 

ou dois-je utiliser GetFlag()

Répondre

2

Pour votre question « Puis-je utiliser de cette classe », la réponse est généralement oui. Lorsque vous dites l'utiliser dans cette classe, cela signifie généralement que vous essayez d'accéder à cette variable à partir de l'une des fonctions définies dans la classe. par exemple:

class RoutingTableEntry 
{ 
public: 
void SetFlag (RouteFlags flag) { m_flag = flag; } 
RouteFlags GetFlag() const { return m_flag; } 

int anotherFunction() { 
    //this is valid 
    test.Report(m_flag) }; 
} 

private: 
    RouteFlags m_flag; 
    TestObject test; 

} 

Mais votre exemple de code test.Report(m_flag) semble que vous essayez d'appeler une fonction de rapport d'un test d'objet différent. Si vous appelez ceci depuis l'extérieur de la classe (c'est-à-dire dans une portée différente, fichier), vous devrez appeler GetFlag car la variable m_flag est un membre privé et ne peut être accédé que par les fonctions RoutingTableEntry.

class RoutingTableEntry 
{ 
public: 
void SetFlag (RouteFlags flag) { m_flag = flag; } 
    RouteFlags GetFlag() const { return m_flag; } 

private: 
    RouteFlags m_flag; 

} 
//code in main 
main() { 
    RouteFlags r1,r2; 
    TestObject test; 

    //this is invalid. 
    test.Report(m_flag) 

    //this is valid 
    test.Report(r1.GetFlag()); 
} 
+0

Ce qui précède est correct. Je voulais juste ajouter que vous pourriez faire de l'autre classe un ami: http://www.cprogramming.com/tutorial/friends.html –