Un ou deux choses. Tout d'abord, comme l'a souligné Ignacio (en supposant que ce soit votre question en premier lieu, c'est un peu vague), nous avons des membres privés pour que d'autres classes ne puissent pas les accepter arbitrairement. Nous exposons ce que nous voulons d'autres classes à utiliser via une interface publique. Deuxièmement, étant donné qu'il s'agit de C++, je recommande fortement d'utiliser std::string
par opposition à char*
.Voici votre classe à nouveau:
#include <string>
class Person
{
private:
std::string m_Name;
public:
const std::string& getName() const {return(m_Name);};
}; // eo class Person
Qu'avons-nous fait ici?
1) Nous avons un C++ std::string
qui gère toutes les affaires de chaînes pour nous. Nous n'avons pas à nous soucier de l'allocation de mémoire, des tailles de mémoire tampon insuffisantes, etc.
2) Il est privé, personne ne peut la vis avec elle, si les classes ne peut se prolonger:
Person p;
p.m_Name = "hahaha, I just messed with you";
3) Pour permettre aux utilisateurs de notre classe ont accès au nom, nous revenons un const std::string&
. Ils peuvent l'utiliser, le voir, mais ne pas le modifier (à moins, bien sûr, qu'ils le constent <>, mais nous avons au moins montré notre intention).
4) Le getter est marqué comme const. Cela indique au compilateur que nous ne modifierons aucun membre de la classe pendant cet appel. J'espère que cela a répondu quelle que soit votre question était de
Je n'ai aucune idée à ce stade.
Fais quoi? (remplissage de l'espace) –
Cette question est incomplète. Publier des erreurs et des échantillons de code cohérents. – jwueller
J'ai formaté la question pour vous. Vous pouvez maintenant voir que la méthode 'setName' n'a pas été déclarée. –