title: template argument required for class
body: <p>I have a dynamic array-based class that I'm calling <code>MyList</code>, that looks as follows:</p>
  
  <pre><code>#ifndef MYLIST_H
  #define MYLIST_H
  #include &lt;string&gt;
  #include &lt;vector&gt;
  
  using namespace std;
  
  template&lt;class type&gt;
  class MyList
  {
  public:
    MyList(); 
    ~MyList(); 
    int size() const;
    type at() const;
    void remove();
    void push_back(type);
  
  private:
    type* List;
    int _size;
    int _capacity;
    const static int CAPACITY = 80;
  };
  
  #endif
  </code></pre>
  
  <p>I also have a another class that I'm calling <code>User</code> that I want to include an instance of <code>MyList</code> as a private data member. User looks like this:</p>
  
  <pre><code>#ifndef USER_H
  #define USER_H
  #include "mylist.h"
  #include &lt;string&gt;
  #include &lt;vector&gt;
  
  using namespace std;
  
  class User
  {
  public:
    User();
    ~User();
  
  private:
    int id;
    string name;
    int year;
    int zip;
    MyList &lt;int&gt; friends;
  };
  
  #endif
  </code></pre>
  
  <p>When I try to compile I get an error in my <code>user.cpp</code> file:</p>
  
  <blockquote>
    <p>undefined reference to <code>MyList::Mylist()</code></p>
  </blockquote>
  
  <p>I find this odd because <code>MyList</code> is completely unrelated to <code>user.cpp</code>, which only contains my User constructor and destructor.</p>