Ich habe viel zu lange in Java programmiert und bin wieder zu C++ zurückgekehrt. Ich möchte Code schreiben, der eine Klasse (entweder eine type_info oder ihr Name in einer Zeichenfolge) eine Instanz dieser Klasse erstellen kann. Der Einfachheit halber nehmen wir an, dass es nur den Standardkonstruktor aufrufen muss. Ist das in C++ überhaupt möglich und wenn nicht, kommt es in einer zukünftigen TR?Möglich, Objekt in C++ aufgrund seines Typs instanziieren?
Ich habe einen Weg gefunden, dies zu tun, aber ich hoffe, dass es etwas "dynamischeres" gibt. Für die Klassen, die ich instanziieren möchte (dies ist ein Problem an sich, da ich diese Entscheidung bis zur Konfiguration belassen möchte), habe ich eine Singleton-Factory mit einer statisch erstellten Instanz erstellt, die sich bei einer anderen Klasse registriert. z.B. Für die Klasse Foo gibt es auch eine FooFactory mit einer statischen FooFactory-Instanz, so dass beim Programmstart der FooFactory-Konstruktor aufgerufen wird, der sich bei einer anderen Klasse registriert. Wenn ich dann zur Laufzeit ein Foo erstellen möchte, finde ich die FooFactory und rufe sie auf, um die Foo-Instanz zu erstellen. Gibt es etwas Besseres in C++? Ich schätze, ich wurde gerade durch reiches Nachdenken in Java/C# verwöhnt.
Für den Kontext versuche ich, einige der IOC-Container-Konzepte, die ich in der Java-Welt so gewohnt bin, auf C++ anzuwenden, und hoffe, dass ich es so dynamisch wie möglich machen kann, ohne eine Factory hinzufügen zu müssen Klasse für jede andere Klasse in meiner Anwendung.
Als eine Folge, ist es möglich, einen "Typ" in C++ zu übergeben? dh. Übergeben Sie kein Foo-Objekt, sondern die Foo-Klasse als Parameter für eine Funktion? Das Java-Äquivalent, an das ich denke, ist eine Methode, die einen Class-Parameter akzeptiert, und Sie können Foo.class übergeben – Greencpp