C++ objet d'égalité

J'ai une classe MyCloth et un objet instance de la classe que j'ai instancié comme ceci:

MyCloth** cloth1;

Et à un moment dans le programme, je vais faire quelque chose comme ceci:

MyCloth** cloth2 = cloth1;

Et puis à un moment plus tard, je veux vérifier pour voir si cloth1 et cloth2 sont les mêmes. (Quelque chose comme objet d'égalité en Java, seulement ici, MyCloth est très complexe de la classe et que je peux"t construire un isEqual fonction.)

Comment puis-je faire ce contrôle d'égalité? Je pensais peut-être vérifier s'ils pointent vers la même adresse. Est-ce une bonne idée? Si oui, comment dois-je faire?

  • Vous n'avez pas un "objet de la classe MyCloth". Si vous croyez ça, vous avez vraiment à repenser beaucoup de choses sur le C++.
  • ...Pourquoi le ptr ptr?
  • SB: j'essayais juste d'expliquer ce que je veux faire, je sais que je peux"t ont un objet de la classe MyCloth, mais je ne savais pas comment le mettre, je suis novice en C++ et en essayant de le comprendre, comme je l'ai créer un projet.
  • cloth1 et cloth2 sont des pointeurs de pointeurs (chaque tissu se compose de pointeurs qui définissent ses paramètres, le comportement, et ainsi de suite)
  • Ce que vous voulez faire est de vérifier si chacun des pointeurs pointent sur la même allocation de mémoire ?
  • Oui, j'espère que cela fonctionnerait. Comment dois-je faire? comme ceci: If(&cloth1 == &cloth2) ?
  • Je sais qu'ils SONT ptr ptrs, je n'ai juste aucune idée de pourquoi vous les utilisez.
  • MadScienceDreams: comme je l'ai dit avant, je suis novice en C++ et je ne"t vraiment long avec des pointeurs très bien. Je ne savais pas comment gérer les pointeurs, je suis en utilisant un programme auxiliaire qui a offert un exemple, et dans cet exemple, ils ont écrit le code comme je l'ai écrit ici
  • Les pointeurs sont juste un emplacement dans la mémoire de l'espace. C'est une adresse à un emplacement dans la mémoire. Le "type" de le pointeur indique comment interpréter les uns et de zéros dans cet endroit. Lorsque vous utilisez un pointeur de pointeur, vous avez une adresse d'une adresse. Rien de ce que vous avez des points à une instance d'une classe. Toutefois, si vous n'avez initialiser une classe, comme "MyCloth* c1 = new MyCloth ();" Que vous pouvez utiliser 'MyCloth* c2 = NULL;/*ou que ce soit*/ c1==c2;" pour vérifier si c'est la même instance de déterminer si ou non les deux pointeurs sont à la même mémoire.Cela ne fonctionne PAS avec l'héritage virtuel!

InformationsquelleAutor user2399378 | 2013-05-30