2015-10-06 2 views
1

У меня есть файл заголовка и есть приватная переменная в немприватной переменной в заголовке

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 
    }; 

мне нужно значение m_flag в другом классе. Этот .cpp имеет файл заголовка, в котором объявлена ​​переменная.

Мое сомнение в том, могу ли я использовать m_flag из этого класса, например, например.

test.Report (m_flag) 

или я должен использовать GetFlag()

ответ

2

Для вашего вопроса «Могу ли я использовать его из этого класса», ответ, как правило, да. Когда вы говорите, что используете его из этого класса, обычно это означает, что вы пытаетесь получить доступ к этой переменной из одной из функций, определенных в классе. например:

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; 

} 

Но ваш пример кода test.Report(m_flag) выглядит, как вы пытаетесь вызвать функцию отчет другого теста объекта. Если вы вызываете это извне класса (то есть в другой области, файл), вам нужно будет позвонить GetFlag, поскольку переменная m_flag является частным членом и может получить доступ только по функциям от 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

Вышесказанное верно. Просто хотел добавить, что вы можете сделать другого класса другом: http://www.cprogramming.com/tutorial/friends.html –

Смежные вопросы