Quindi un'API Instanced è una che si comporta come un oggetto. Quindi per esempio:
foo* GetInstancedAPI();
void MemFuncSetter(foo* fooThis, const int arg);
int MemFuncGetter(const foo* fooThis) const;
Questo è in contrasto con una API non istanziata che dipenderebbe dalle ricerche:
int GetInstancedAPI();
void MemFuncSetter(const int index, const int arg);
int MemFuncGetter(const int index) const;
Un piccolo background sulla situazione, questa è un'API C, che viene utilizzata per avvolgere un'implementazione C ++. Quindi internamente all'implementazione sto lavorando con gli oggetti. Quindi ho cercato di riflettere sulle ramificazioni di ciascuno, i problemi più importanti che posso pensare sono:
- Come gestirò i callback?
- C'è un modo per ridurre al minimo il costo di ricerca?
Modifica
Ci sono state molte richieste di chiarimenti: foo*
è in realtà un puntatore void
nell'interfaccia C che sarà reinterpret_cast
in un puntatore all'oggetto C ++ attuale, quindi deve essere passato.
Le funzioni che prendono un int
sono con l'intenzione di indicizzare in vector
di oggetti nel C ++ avvolto.