No, C++ è un tipo statico, compilato in linguaggio binario nativo.
Sebbene sia possibile utilizzare compilazione JIT LLVM, compilare e collegare senza interrompere il runtime. Dovrebbe essere fattibile, ma non è solo nel dominio del C++.
Se si desidera un motore di scripting in C++, è possibile utilizzare ad esempio JS - è di gran lunga la soluzione dinamica più veloce là fuori. Anche Lua, Python, Ruby sono OK, ma in genere più lenti, il che potrebbe non essere una cosa terribile considerando che lo stai usando solo per lo scripting.
Per esempio, in Qt si può fare qualcosa di simile:
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QScriptEngine engine;
QScriptValue value = engine.evaluate("var a = 20; var b = 30; a + b");
cout << value.toNumber();
return a.exec();
}
E otterrete 50;)
no. non è. dovresti incorporare l'intero complesso del compilatore C++ all'interno della tua app affinché tale cosa sia persino lontanamente possibile. –
Se si desidera un linguaggio di scripting incorporato, considerare Lua. –
@jrok: certo che lo è. In realtà ho fatto qualcosa del genere in passato (per una specie di implementazione di software shader per un vecchio ray tracer da me). L'unica "magia" è invocare un compilatore. –