Wenn Sie eine Methode definieren möchten, um einen Vergleich einer Menge von Objekten Ihrer custome-Klasse zu ordnen. Zum Beispiel:
someClass instance1;
someClass instance2;
können Sie tun, indem Sie die < Betreiber für diese Klasse zu überlasten.
class someClass
{
bool operator<(someClass& other) const
{
//implement your ordering logic here
}
};
Wenn das, was Sie tun möchten, ist zu vergleichen und sehen, ob die Objekte buchstäblich das gleiche Objekt sind, können Sie einen einfachen Zeiger Vergleich tun, um zu sehen, ob sie auf das gleiche Objekt zeigen. Ich denke deine Frage ist schlecht formuliert, ich bin mir nicht sicher, wofür du hingehst.
EDIT:
Für die zweite Methode, es ist wirklich ganz einfach. Sie benötigen Zugriff auf den Speicherort Ihres Objekts. Sie können auf viele verschiedene Arten darauf zugreifen. Hier sind ein paar:
class someClass
{
bool operator==(someClass& other) const
{
if(this == &other) return true; //This is the pointer for
else return false;
}
};
Anmerkung: Ich weiß nicht wie die oben, wie in der Regel == Betreiber mehr in die Tiefe gehen, als nur den Vergleich Zeiger. Objekte können Objekte ähnlicher Qualität darstellen, ohne gleich zu sein, aber dies ist eine Option. Sie können dies auch tun.
someClass *instancePointer = new someClass();
someClass instanceVariable;
someClass *instanceVariablePointer = &instanceVariable;
instancePointer == instanceVariable;
Dies ist nicht sensibel und ungültig/falsch. Wenn es je nach deinen Flags sogar kompilieren würde, hoffentlich mit Flags, die das nicht zulassen würden!
instancePointer == &instanceVariable;
Dies ist gültig und würde zu false führen.
instancePointer == instanceVaribalePointer;
Dies ist ebenfalls gültig und würde zu false führen.
instanceVariablePointer == &instanceVariable;
Dies gilt auch und
in TRUE
instanceVariable == *instanceVariablePointer;
führen würde dieser den Operator == verwenden würden wir über das Ergebnis TRUE bekommen definiert;
Sie tun * nicht * haben ein "Objekt der Klasse' MyCloth'":
Mit Operator == definiert, können Sie Gleichheit vergleichen. Wenn Sie das glauben, müssen Sie * wirklich * viel über C++ nachdenken. –
... Warum das ptr ptr? – IdeaHat
@Kerrek SB: Ich habe nur versucht zu erklären, was ich tun möchte, ich weiß, ich kann kein Objekt der Klasse MyCloth haben, aber ich wusste nicht, wie ich es anders ausdrücken könnte, ich bin neu C++ und versuche es herauszufinden, während ich ein Projekt erstelle. – user2399378