title: Define the prototype of a function with a std::vector as input parameter in an header
body: <p>I'm getting crazy since i'm not able to define the prototype of a function i'm actually using.
   What i'm doing is create an header file called <code>func1.h</code>where i define this prototype (that's because i need to invoke this function from some other function implemented elsewhere):</p>
  
  <pre><code>void FileVector(std::vector&lt;Files&gt; &amp;,const char*,bool);
  </code></pre>
  
  <p>Where <code>Files</code>is a struct defined in <code>func1.cpp</code></p>
  
  <pre><code>struct Files{
          HANDLE h;
          WIN32_FIND_DATA info;
          } file;
  </code></pre>
  
  <p>I have also another function that accept a <code>std::vector&lt;Files&gt; &amp;</code> as input parameter but when i try to compile (using Eclipse C++) i'm getting those errors:</p>
  
  <pre><code>/FileVector.h:11:22: error: variable or field 'FileVector' declared void
  ..\/FileVector.h:11:17: error: 'vector' is not a member of 'std'
  ..\/FileVector.h:11:29: error: 'Files' was not declared in this scope
  </code></pre>
  
  <p>I've tryied to include several directive in the header file..for example declaring the struct in the header and including vector header do the trick but this way i got loads of "multiple definitions/first defined here" error.
  What can i do?</p>
  
  <h1>EDIT</h1>
  
  <p>Now my header looks like:</p>
  
  <pre><code>#ifndef FILEVECTOR_H_
  #define FILEVECTOR_H_
  #include &lt;vector&gt;
  #include &lt;windows.h&gt;
  
   struct Files{
          HANDLE h;
          WIN32_FIND_DATA info;
          };
  
   void FileVector(std::vector&lt;Files&gt; &amp;,const char*,bool);
  
   #endif /* FILEVECTOR_H_ */
  </code></pre>
  
  <p>At this point, i need to declare another prototype in another header:</p>
  
  <pre><code>void ProcessInput(vector&lt;Files&gt;&amp;);
  </code></pre>
  
  <p>but i can't use the same trick as above cause i'll have to re-define the Files struct. How can i solve this?</p>