Sfortunatamente, questo funziona solo per qualsiasi cosa tu faccia, ma è ancora qualcosa da tenere a mente se usi molte delle tue librerie.
Una cosa che ho fatto per tutte le librerie che faccio è cercare di ingannare intellisense con un #define. Nella mia dichiarazione di classe nel file di intestazione per qualsiasi biblioteca sto facendo, mi circondo tutta la parte privata in uno spazio #ifdef, ad esempio
#ifdef MYCLASS_SHOW_PRIVATE_VARIABLES
private:
int hideThisVariable;
float noShow;
void HiddenIncrementFunction();
#endif
Poi, nella sezione di codice della classe in cui ho bisogno di fornire definizioni per tutti i metodi, in alto prima di includere il file con le dichiarazioni di classe, aggiungo
#define MYCLASS_SHOW_PRIVATE_VARIABLES
in questo modo, i membri privati sono visibili solo ai metodi di implementare per la classe nel file di origine. Qualsiasi client che usi questa libreria non sarebbe in grado di vedere le variabili private tramite intellisense, a meno che, naturalmente, non capiti di definire la direttiva del pre processore.
fonte
2012-09-29 16:28:44
@Keoki Ci proverò un po 'più difficile :) – aligray
Stai cercando di impedire che ciò accada quando i client usano il tuo codice? Dubito che sarebbe possibile. Se si tratta di un'impostazione in MSVC, chiunque utilizzi la propria API dovrebbe averla attivata. – RageD
@Keoki: Esiste con alcune soluzioni Intellisense di terze parti come Visual Assist X, ma non è integrato in Visual Studio. – ildjarn