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.