2015-02-24 3 views
1

В настоящее время я пытаюсь изучить C++ и следовать инструкциям. Я исследовал мутаторы и аксессоры, но мне нужно простое объяснение.Аксессоры и мутаторы C++

class Customer 
{ 
public: 
    Customer(); 
    ~Customer(); 

private: 
    string m_name; 
    int m_age; 

}; 

Право на приведенный выше код в файле заголовка. Внутри инструкций он просит меня установить общедоступные аксессоры и мутаторы для обеих данных. Как мне это сделать?

Также упоминается, что возраст не отрицательный в мутаторе. Я знаю, как реализовать код, но я просто смущен тем, где его разместить. Разместить проверку в этом заголовочном файле? или в .cpp? или в основном методе?

Я знаю, это звучит глупо, и я уверен, что просто, но я хотел бы попытаться понять это.

+0

мысли о его прибегая к помощи - например. http://en.wikipedia.org/wiki/Mutator_method#C.2B.2B_example –

+0

тег мутатора содержит только 75 вопросов. = (Так грустно, что ни один из вопросов с тегом mutator с этой недели не ответил вообще. Mutator tag - тег пренебрежения. –

+0

определение функции входит в заголовок. Реализация (и проверка) идет в cpp. в основном, но тогда вам придется повторно выполнить проверку, если вы хотите повторно использовать класс в других проектах. – mstbaum

ответ

5

Обратите внимание, что это базовый C++.

Accessor - Функция-член, используемая для извлечения данных защищенных элементов.

Мутаторы - Функция члена, используемая для редактирования данных защищенных членов.

В вашем случае,

class Customer 
{ 
public: 
    Customer(); 
    ~Customer(); 
    string getName(); // Accessor for the m_name variable 
    void editName(string in); // Mutator for the m_name variable 

private: 
    string m_name; 
    int m_age; 

}; 

Внутри файла .cpp:

string Customer::getName() { 
    return m_name; 
} 

void Customer::editName(string in) { 
    m_name = in; 
} 
+2

Я считаю, что setName является более распространенным именем для мутатора, чем editName. –