title: How to invoke parameterised constructor in PIMPL design pattern?
body: <p>How to use PIMPL design for parameterized constructor?</p>
  
  <pre><code>/* ProcessImpl.h */
  class ProcessImpl {
  public :ProcessImpl(); 
      ProcessImpl(ProcessID thirdParty_pid);
      ~ProcessImpl();
  } 
  
  /* Process.h */
  class Process { 
  public:virtual ~Process () {}; 
      Process();
      Process(ProcessID thirdParty_pid);
  
  protected: 
      void createImpl(); 
  private: 
      ProcessImpl * _impl; 
  }
  
  /* Process.cpp */
  Process::Process():_impl(NULL) {
  }
  
  Process::Process(ProcessID thirdParty_pid) {        
      createImpl();
      _impl-&gt;ProcessImpl(ldframework::ProcessID thirdParty_pid);
  }
  
  void Process::createImpl(){
      if(this-&gt;_impl == NULL) {
          this-&gt;_impl = new ProcessImpl();
      }
   }
  </code></pre>
  
  <p>When I compile this I am getting error:
       Process.cpp: error: invalid use of class ProcessImpl<br>
       This is the line throwing error _impl->ProcessImpl(ldframework::ProcessID thirdParty_pid)</p>
  
  <pre><code>Please help
  </code></pre>