Wie kombinieren Sie die Vorlagen mit der Enumerationen in C++?

Gibt es eine riesige feature-collection in C++ - Programmiersprache, mit der Lieferung einer strengen Kontrolle über die Datentypen. Häufig würde man Schimmel seinen code mit template-system zu erreichen, die ausreichende Funktionalität und der Gewährleistung der innerhalb der it die richtige Art Erhaltung und Flexibilität in seiner manipulation. Weniger Häufig Aufzählungen sind für diesen Zweck verwendet, da Sie erlauben, definieren Sie eine explizite Möglichkeiten für die Daten und haben keine direkte Möglichkeit zu überprüfen, geben Sie die Richtigkeit.

Also, was wir haben, sind Vorlagen, die es ermöglichen, Funktionen und Klassen zum arbeiten mit generischen Typen ohne umgeschrieben werden für jeden einzelnen; und Enumerationen, die Bereitstellung einer gerade die Verwendung der zu erwartenden Arten.

Ist es möglich zu definieren, eine eingeschränkte template-Architektur für eine Klasse mit einem enum als Modell? Wie kann ein templatized Methode verwenden enumed geben und wenn, könnte es nützlich sein?

Meine Letzte Frage ist: wie verbinden Vorlagen und enumeration-Typen und verwenden Sie Sie zusammen in den abstrakten Daten-design?

Als ein Beispiel nehmen wir an, Sie versuchen, zu erstellen ein Daten-container, die Sie erwarten, dass Typen in ein enum innerhalb der Klasse:

template <typename T>
class element
{
public:
  enum type { text_type, widget_type, image_type };

  ...
private:
  type node_type;

};

Sie auch definiert jede der vorhandenen Typen in class element:

class text;
class widget;
class image;

Erstellen eines Elements legen Sie Ihre content-Typ (text, widget oder Bild), so übergeben Sie es durch das template-argument.

if (node_type == text_type) do_something();

In Java Sie haben List<? extends T> implizit sagt, was die Art der Klassen können verwendet werden als template-parameter. Kann es sein, erfolgt in C++ unter Verwendung von enums? Wie die Arbeit mit enumed Typen in Anweisungen?

Frage: ich würde gerne wissen, wie zu beschränken, das Verhalten der Vorlagen enumed-Typen, um sicherzustellen, dass nur diese verwendet werden, und orientieren Sie den code mit der traditionellen Arbeitsweise mit enums.

Was meinst du mit "Ist es möglich zu definieren, eine eingeschränkte template-Architektur für eine Klasse mit einem enum als Modell?"?
Ist die enum-Verhalten Frage Kaskadierung von Java-Nutzung ?
Sie müssen klären, Ihre Frage. Wie geschrieben, es ist viel zu vage. Versuchen posting etwas code zu zeigen, was Sie zu tun versuchen
Fügen Sie bitte einen möglichen Einsatz-Fall (pseudo-code) auf Ihre Frage.
Sprechen Sie über ein äquivalent zur Java - List<? extends T> Generika Paradigma?

InformationsquelleAutor Rizo | 2010-10-19

Schreibe einen Kommentar