Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Klasse mit "bedingter Instanzierung"

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.12.2006, 16:12 Uhr
Soto



Hallo,

was ich gerne schreiben möchte, ist eine Klasse, bei welcher, wenn ein Objekt von ihr erzeugt werden soll, zuerst entschieden wird, ob es ein Objekt dieser Klasse mit denselben Eingabeparametern nicht schon gibt.
Beispielsweise macht es keinen Sinn, zwei Kugeln zu haben, die denselben Radius haben, da diese Kugeln dann ja ident sind. Es soll also vor Erzeugung einer Kugel überprüft werden, ob es schonmal eine Kugel mit diesem Radius gibt.
Kann ich dazu eine Art modifiziertes Singleton-Pattern verwenden? Oder hat jemand eine bessere Idee?
--
ich versuche zu helfen, sorry wenn ich nen scheiß rede ^^
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.12.2006, 16:18 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Ich würde mal sagen vor der Laufzeit bekommst du das nicht (nur schwer) hin. Extra merken und instantizieren ggf. verhindern...

Da viel energie reinstecken ist vermutlich mit kanonen auf spatzen schießen
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.12.2006, 16:34 Uhr
Pler
Einer von Vielen
(Operator)


Kannst du die nicht einfach als Keys in eine Map haun. Dann sollte es jede nur noch einmal geben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.12.2006, 16:55 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von Soto:
Hallo,

was ich gerne schreiben möchte, ist eine Klasse, bei welcher, wenn ein Objekt von ihr erzeugt werden soll, zuerst entschieden wird, ob es ein Objekt dieser Klasse mit denselben Eingabeparametern nicht schon gibt.
Beispielsweise macht es keinen Sinn, zwei Kugeln zu haben, die denselben Radius haben, da diese Kugeln dann ja ident sind. Es soll also vor Erzeugung einer Kugel überprüft werden, ob es schonmal eine Kugel mit diesem Radius gibt.
Kann ich dazu eine Art modifiziertes Singleton-Pattern verwenden? Oder hat jemand eine bessere Idee?



Pattern ist gut, aber weniger ein Singelton Pattern, sondern vielmehr ein Factory Pattern.

Consider:

C++:
class Kugel {
    private double radius;

// Private nur npotwendig, wenn Du Instantiierung allein über Factory haben willst:
private:
    Kugel(double radius) :radius(radius) { };

public:

    double gib_radius() const { return radius; }
    ...

    friend class KugelFabrik;
};  

class KugelFabrik {

   // Die Fabrik ist nun einsingleton
private:
   std:map<double,Kugel*> kugeln;

   KugelFabrik() { };

public:
   static KugelFabrik& dieFabrik() const {
        static KugelFabrik fabrik;
        return fabrik;
   };

   Kugel& gibKugel(double radius) {
        // Geht auf effizienter und unübersichtlicher
        Kugel* kugel = kugeln[radius];
        if (!kugel) {
            kugeln[radius] = kugel = new Kugel(radius);
        }
        return *kugel;
   }
};


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: