wie man eine Funktion in C ++ dynamisch aufruft

10

Anders als boost (Bind & amp; Funktion), wie kann ich eine Funktion in C ++ dynamisch aufrufen?

PHP hat:

%Vor%

Objective-C hat:

%Vor%     
joels 19.01.2012, 05:27
quelle

5 Antworten

3

Wenn die Funktionen, an denen Sie interessiert sind, vom selben Typ sind, können Sie eine Zuordnung von Zeichenfolgen und Funktionszeigern erstellen.

    
stralep 19.01.2012, 05:30
quelle
8

Sie können die erforderlichen Funktionen exportieren (z. B. indem Sie sie mit __dllexport markieren) und GetProcAddress oder dlsym (abhängig von Ihrer Plattform) zum Abrufen ihrer Adresse verwenden:

%Vor% %Vor%

All dies ist jedoch plattformspezifisch und es gibt in C ++ keinen Standard dafür.

    
Konstantin Oznobihin 19.01.2012 05:47
quelle
2

Die einfache Antwort lautet: Sie können nicht. C ++ macht keine Methode nach Namen.

    
Graham Perks 19.01.2012 05:46
quelle
2

Erweitern Sie die Antwort von Konstantin Oznobihin auf die Frage und markieren Sie die C ++ - Funktionen, auf die Sie mit externem "C" in der Deklaration verweisen, um zu verhindern, dass der Compiler die Namen während der Kompilierung entstellt.

%Vor%

Damit können Sie Ihr Objekt / Ihre Funktion mit dem Namen aufrufen, den Sie ihm ursprünglich gegeben haben. In diesem Fall ist es "Hallo".

%Vor%

Es gibt eine Menge Dinge, die extern "C" unter der Haube tut, also hier eine kurze Liste: In C ++ - Quelle, was ist der Effekt von extern "C "?

    
deadbabykitten 25.08.2013 15:46
quelle
2

Wenn ich Ihre Frage richtig verstanden habe, Sie können den Funktionszeiger (oder Zeiger auf Member) in C ++ verwenden. Sie können dynamisch entscheiden, welcher Funktionsaufruf (Sie benötigen möglicherweise einen Prototyp desselben) und dynamisch aufrufen. Siehe diesen Link

Ссылка

    
sarat 19.01.2012 06:15
quelle

Tags und Links