sagen, dass ich die folgende Klasse haben: (möglicherweise meta-generated)Call a Klassen unter Verwendung eines std :: string
class MyClass
{
public:
myMethod();
...
}
hier ein paar Dinge Unter der Annahme:
1.) I have the class name from somewhere (let's pretend)
2.) I have the names of the class methods somewhere (std::map< std::string, std::function> ... perhaps?)
So ... Da ich den Namen myMethod()
bis zur Laufzeit nicht kennen kann, gibt es eine Möglichkeit, es unter Verwendung einer std::string
zu nennen? Dies setzt voraus, dass ich die Namen einer Klasse Funktionen irgendwo gespeichert habe.
MyClass example;
std::string funcName{ findMyMethod() };//get std::string name of myMethod
example.someHowRunMyMethodUsing_funcName_();
weiß ich C++ ist in der Regel nicht für Selbstbeobachtung ähnliche Situationen geeignet, aber ich möchte dies herauszufinden.
Danke!
Haben die Methoden dieselbe Signatur? – Jarod42
Viele verschiedene Signaturen, aber ich werde Zugriff auf ihre String-Namen haben. Es kann am Ende einige Namenskonventionen geben, um es einfacher zu machen. – DaveyLaser
So scheint es, dass Sie mehrere Karten benötigen, eine nach Signatur. – Jarod42