2012-03-26 10 views
0

Ich bin immer noch ziemlich neu in der Klasse Konzept. Ich habe ein Problem hier. zum Beispiel habe ich eine KlasseWie bekomme ich ein bestimmtes Klassenobjekt

class p{ 
     int id; 
     p(id){ 
       //constructor 

     } 
} 

jetzt genannt wird, möchte ich Instanzen der Klasse p machen. Nachdem ich alle Instanzen habe. Ich möchte eine Funktion get_p (pid) zu die spezifische Klasse p die id = pid zurückgeben, wie kann ich diesen Teil schreiben?

Ich habe C++ und Java-Klassen-Tutorials gelesen, aber ich kann das nicht aussortieren. Bitte hilf mir.

+0

Was haben Sie versucht? In Java könnten Sie beispielsweise Ihre p-Instanzen in einer Map speichern, in der der Schlüssel id ist und der Wert das entsprechende p ist. – assylias

+0

Iteriere über jede Klasse (du müsstest Referenzen auf sie in einem Array oder einem anderen Container speichern) und überprüfe, ob jede Klasse deine gewünschte ID hat. Alternativ könnten Sie ein Wörterbuch verwenden. – Blender

+0

Welches Verhalten wollen Sie, wenn zwei oder mehr p Objekte dieselbe ID haben? Und meinen Sie, Sie möchten eine bestimmte * Klasse * oder eine bestimmte * Instanz * zurückgeben? – juanchopanza

Antwort

2

Sie müssen dies manuell verfolgen, z. mit einem Map; Es gibt keine Möglichkeit, "das Objekt mit dieser spezifischen ID" nachzuschlagen.

1

Eine andere Klasse muss sich an all diese Instanzen hängen und die <id, p> in eine Map einfügen, die eine Suche durchführen kann. Ich würde ein Fabrikmuster irgendeiner Art empfehlen.

0

Wo werden diese Instanzen gehalten? Meine Vermutung ist, dass Sie eine Klasse "c" brauchen, die alle Ihre "p" -Instanzen enthält. EG: Klassenrechnung enthält eine Sammlung der Klasse Artikel in einer Eigenschaft namens Artikel. Wenn diese ausgefüllt und benötigt wird, fragt Ihre Rechnungsinstanz Artikel (eine Instanz einer Sammlungsklasse) nach Ihrem Artikel über die ID

an
0

Mit Vorlage Meta-Programmierung und Typelist (auch eine Meta-Programmierung Konzept) können Sie solche Sachen in C++ tun. Aber ich denke, das ist ein statisches Mitglied oder ein Template-Parameter.

Verwandte Themen