title: Hiding private members of c++ library
body: <p>I have written a library (doesn't matter what it does), which obviously has its header file. Now, I want to hide private elements of that header file, so if I provide my library to somebody, he/she should only see public members (preferably no class definition, nothing other than function definitions). One way would be creating C-style header, which will contain some kind of "init" method which will be used to create an instance of the actual class of library and the user will have to pass a pointer of that object to every function to do the job. </p>
  
  <p>Is it a good practice?</p>
  
  <p>Are there any other publicly accepted ways of doing something like that?</p>
  
  <p>Thanks in advance.</p>