Domanda

Esiste un modo per nascondere i membri di dati privati ??di una classe C ++ ai suoi utenti, nel file cpp? Penso ai membri privati ??come parte dell'implementazione e sembra un po 'arretrato dichiararli nel file di intestazione.

È stato utile?

Soluzione

Il " pimpl " idioma è come questo è generalmente gestito.

Vedere

Altri suggerimenti

vuoi usare qualcosa di simile al linguaggio PIMPL

http://en.wikipedia.org/wiki/Opaque_pointer

Il modo classico per farlo è con un puntatore proxy a una classe interna che implementa la funzionalità. Non c'è modo di definire definizioni di classe parziali in C ++ che conosco.

Stai andando commerciale? ;)

Puoi creare file di intestazione, in cui dichiari solo l'API pubblica e protetta.

All'utente vengono presentati solo questi, che possono includere. Collegano il loro codice con una libreria, che hai creato utilizzando l'API completa e le definizioni.

Per le funzioni incorporate: assicurati che siano utilizzate nel codice non incorporato, quindi ci sarà una definizione disponibile nella libreria (non sono sicuro che sarà incorporata nell'implementazione dell'utente, tuttavia).

Per il codice basato su modelli non esiste un vero modo per aggirare. Una soluzione senza mezzi termini è quella di creare codice, che utilizza il codice basato su modelli con diversi tipi di oggetti. L'utente sarà limitato a questi, perché sono le uniche definizioni disponibili nella tua libreria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top