Gibt es eine Möglichkeit, einer STL-Klasse innerhalb Ihres Codes eine private Variable hinzuzufügen? Zum Beispiel so, dass jeder Instanz von "std :: list" eine zusätzliche Variable hinzugefügt wird. Oder müssten Sie nur Ihre eigene Liste von Grund auf neu erstellen?Private Variable zu C++ STL-Klasse hinzufügen
Antwort
In einigen Fällen ja. Zum Beispiel haben std :: istream und std :: ostream eine spezielle, selten verwendete Methode namens xalloc()
, mit der Sie allen Instanzen dieser Klassen ein oder mehrere long
oder void*
Mitglieder hinzufügen können.
Aber das ist nicht typisch. Für Container-Klassen wie std :: list gibt es keinen solchen Member-Hook, um "Slots" hinzuzufügen, um benutzerdefinierte Daten zu enthalten.
Container-Klassen verfügen jedoch über ein optionales Vorlagenargument für einen Zuordner. Jeder Container verfügt über einen Zuordner, der standardmäßig zustandslos ist und new
und delete
verwendet, um Elemente zuzuordnen. In C++ 11 und später können diese Zuordner "stateful" sein, was bedeutet, dass Sie Ihren eigenen Zuweiser mithilfe von new
und delete
erstellen, aber auch beliebige zusätzliche Daten speichern können.
Sobald Sie Ihren Zuordner mit dem von Ihnen benötigten Status geschrieben haben, können Sie ihn abrufen, z. aus einer Liste mit get_allocator()
.
Die Verwendung des Allokators ist ein kluger Trick. Danke. – YSC
- 1. C# Private-Variable Liste
- 2. Passing private Variable zu Basisklassenkonstruktor
- 3. Pass eine private Variable auf eine öffentliche statische Variable C#
- 4. private Variable wird null
- 5. private Variable mit Schließung
- 6. Eine private Referenz zu einem Objekt hinzufügen
- 7. Angular2 Observable Aktualisieren private Variable
- 8. Android: Hilfe Bild zu Private Zeichenfolge hinzufügen
- 9. Eigenschaftsset Methode ohne private Variable
- 10. JsonConvert SerializeObject: private Variable serialisiert
- 11. Private Schnittstelle vs. private Methode - Ziel c
- 12. Private statische Eigenschaft in C#
- 13. Zugang private Variable ohne eine Eigenschaft
- 14. Wie kann man eine private Variable zu diesem JavaScript-Objekt-Literal-Snippet hinzufügen?
- 15. Tage zu PHP Variable hinzufügen
- 16. C# Hinzufügen von '[' ']' zu Variable für TableName Verwendung
- 17. C# Hinzufügen Element zu einer Objektliste mit Variable als Listenschlüssel
- 18. Private Datenmitglieder verstecken? (C++)
- 19. C# private (versteckte) Basisklasse
- 20. C++ 11 private Standardkonstruktors
- 21. private Variable Deklaration in Typoskript Konstruktor DI zu induzieren
- 22. Öffentliche Eigenschaften und private Mitglieder C#
- 23. Python, Variable Index zu dbm.dumb Modul hinzufügen
- 24. Wie auf lokale Variable von öffentlichen Methode zu private Methode in C#
- 25. Wie Funktion Rückruf private Variable zwischen Anrufungen
- 26. OLOO wie auf private Variable zugreifen
- 27. Verwenden Sie private Variable in inertence
- 28. C++ Lambda-Capture-private Klasse Mitglied
- 29. php Anruf private Variable in einer anderen privaten Variable Fehlern
- 30. Js OOP: private Variable aus einer Klasse
Warum nicht eine Klasse von 'std :: list' abgeleitet? Von Grund auf neu zu machen ist normalerweise eine sehr schlechte Idee. – tadman
@tadman Vergiss nicht 'privat'. – LogicStuff
Klingt nach einem [XY Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) - was willst du * wirklich * erreichen? –