Voglio compilare le funzioni personalizzate durante il runtime in base agli script scritti dall'utente. Darò un esempio ipotetico che dovrebbe dimostrare esattamente quello che devo fare. Questo è il modo migliore per descrivere il problema. Mi piacerebbe un piccolo input / idee su come posso risolvere questo. In fondo ti do le mie idee.
Ho 2 classi, una con public int xey. Un altro con int pubblico x, y, z. Ci possono essere più di un'istanza di ogni classe in esecuzione.
La cosa con queste classi però (ed ecco che arriva il mio problema) è che devono essere aggiornabili tramite una funzione scritta dall'utente e poi compilata durante il runtime, che poi viene aggiunta a un elenco di funzioni di aggiornamento che vengono eseguite una volta per ciclo / evento. Quale potrebbe essere al tocco di un pulsante o qualcosa del genere.
Esempio: l'utente ha scritto uno script per aggiornare i membri pubblici di Classe A. Ha scritto A.X = B.Y + C.Z. Le variabili qui sono pubbliche, mai private. Questo metodo deve essere compilato e aggiunto a un elenco di funzioni per chiamare ogni ciclo. Ovviamente questo metodo ha bisogno di accedere alla classe B e C, così come a A. Quindi i riferimenti a quelli che devono essere passati. La funzione non restituisce nulla.
Quando dico le classi A, B e C., intendo queste come alcune istanze di qualsiasi classe. 'A' potrebbe essere la classe Q, mentre sia B che C potrebbero essere della classe T. O qualsiasi altra variazione. Queste classi non hanno bisogno di ricompilazione / scrittura dell'utente o qualcosa del genere.
Ho solo bisogno di aiuto con le opzioni e come compilare una funzione che viene passata in alcuni puntatori e fa qualcosa con loro. Ma con tutto questo tempo di esecuzione definito, cosa fa la funzione, cosa viene trasmessa in esso, ecc.
---- Cosa penso di poter fare ---
Sto saltando molto in profondità nella conoscenza, ma è quello che faccio sempre. Quindi sto passando da C # a C ++ e ho poco da fare per ora mentre conosco poco. Quindi tutto quello che posso fare è indovinare le soluzioni e ricercarle. Immagino che potrei compilare una DLL in ritardo di caricamento per ogni funzione, e suppongo che la DLL debba sapere qualcosa sulle strutture dati passate, quindi penso che potrebbe funzionare per renderle in una normale dll separata utilizzabile da qualsiasi programma. (Le cose di classe A, B e C, o piuttosto le classi Q e T che A, B e C erano istanze della mia piccola demo). Così ora sia il programma normale che le funzioni dll conoscono tutto sulle classi, e tutto quello che devo fare è compilare le DLL durante il runtime, caricarle e in qualche modo ottenere un puntatore a loro che la mia applicazione principale ha e può chiamare con l'appropriato argomenti. Quindi se l'utente cambia lo script, la DLL scarica, ricompila, carica nuovamente e viene ottenuto un nuovo puntatore?
Qualsiasi aiuto è molto apprezzato. Se puoi aiutare a dirigere il mio apprendimento / ricerca, imparerò molto più velocemente e potrò implementarlo. Grazie mille!