Qualcuno può darmi un esempio di come funzionano gli header pubblici e privati? Ho fatto qualche lettura in rete ma non riesco a trovare molte informazioni utili con i codici di esempio. Mi è stato consigliato di utilizzare intestazioni private per separare le parti pubbliche e private del mio codice per la creazione di una libreria statica. Dopo alcune letture ho un'idea generale di come funziona, ma apprezzerei davvero un buon esempio per iniziare. In particolare, quello che non capisco è come mettere le funzioni dell'interfaccia nella mia intestazione pubblica e le variabili/funzioni private nella mia intestazione privata? Grazie!Esempio di intestazione privata/pubblica?
EDIT:
Forse non sono formulazione mia domanda giusta, ma quello che volevo dire è, per esempio, ho myMath.h e myMath.cpp, e myMath.h ha:
class myMath{
public:
void initialise(double _a, double _b);
double add();
double subtract();
private:
double a;
double b;
};
E myMath.cpp ha le implementazioni delle funzioni. Come posso fare in modo che myMath.h abbia solo le tre funzioni pubbliche, e le variabili private siano definite in un altro file (es. MyMath_i.h), e questi tre file sono in modo tale che dopo aver creato una libreria statica, solo myMath.h è necessario per gli utenti. Questo significa anche che myMath.h non può #include myMath_i.h. Quindi, qualcosa di simile a:
myMath.h:
class myMath{
public:
void initialise(double _a, double _b);
double add();
double subtract();
}
e myMath_i.h:
class myMath{
private:
double a;
double b;
}
Naturalmente questo non è possibile perché poi sarò ridefinire il myMath di classe ...
Questo va oltre la semplice fornitura di intestazioni pubbliche e private e mostra anche l'idi di pImpl: pubblico/privato è necessario per questo, ma pImpl non è richiesto. –
@AndrewAylett, come faresti senza pimpl? –
@LyndenShields, intendevo che è possibile avere intestazioni pubbliche e private per motivi diversi da pimpl, quindi la dimostrazione di pimpl sta dimostrando un uso specifico per intestazioni pubbliche/private, non l'idea generica. –