Gibt es eine Möglichkeit, eine Liste (z. B. ein Array) von Zeigern für jede Methode einer C ++ - Klasse zu erstellen?
Etwas wie Type.GetMethods()
im .NET-Framework, aber nur Standard-C ++ verwenden.
Es gibt keinen Weg.
Tatsächlich kann sogar auf der Objektcodeebene eine statische Klassenmemberfunktion nicht von einer eigenständigen Funktion oder einer Klasseninstanzfunktion von einer Standalone-Funktion unterschieden werden, die einen Zeiger auf ein Objekt übergibt.
Wenn Sie Ihr Namensschema für Compiler kennen und Zugriff auf den Code des vorverknüpften Objekts hatten, können Sie es möglicherweise entschlüsseln, aber das ist eine Menge Arbeit für fehlerhafte Ergebnisse.
Erstellen Sie eine Kopie der .h-Datei und hacken Sie sie in einem Editor ab.
Nein, es gibt keine Möglichkeit, dies automatisch zu tun.
Wenn Sie wirklich das wollen, Kapitel 8 von Fortgeschrittenen C ++ - Programmierstilen und Idiomen von James Coplien (wahrscheinlich schon lange vergriffen, aber ich höre Neil wäre bereit, seine Kopie billig zu verkaufen) deckt die Programmierung mit "Exemplaren" in C ++ ab. Machen Sie sich nichts vor, die Fähigkeit ist nicht kostenlos, aber sie kann metaklassähnliche Fähigkeiten in C ++ bereitstellen.
Ich kann mich nicht daran erinnern, wie er die besondere Fähigkeit, die man in einer seiner Klassen sucht, aufgebaut hat, aber es ist lange her, dass ich dieses Buch auch nur sorgfältig gelesen habe. Es ist immer möglich , dass es überhaupt nicht möglich ist, aber ich denke, es würde funktionieren, wenn Sie mit den anderen Einschränkungen dessen, was er offenbart, leben können.Es gibt keine Meta-Klassen in C ++, nur Objekte und Klassen, daher kann keine Reflexion beteiligt sein, daher lautet die Antwort nein.
Sie können die Typinformationen mit typeid erhalten, aber nicht mit den Methodeninformationen.
Tags und Links c++