Copy constructor for a generic doubly-linked list
<pre><code>template &lt;class T&gt;
class list
{
public:
    //stuff
    list(const list &amp;cctorList); //cctor
private:
    struct node
    {
       node *next;
       node *previous;
       T *info;
    }

    node *firstNode; //pointer to the first node (NULL if none)
    node *lastNode; //pointer to the last node (NULL if none)
}
</code></pre>

<p>I'm now trying to define <code>list(const list &amp;cctorList); //cctor</code> but I'm running into trouble.</p>

<p>Here's what I have so far:</p>

<pre><code>template &lt;class T&gt;
list&lt;T&gt;::list(const list &amp;cctorList)
{
    node *another = new node;
    firstNode = another;
    another-&gt;previous = NULL;
    another-&gt;info = new T(*(cctorList-&gt;info));

    // ...
}
</code></pre>

<p>Is everything up to this point correct?  Is there a way for me to recursively assign <code>another-&gt;next</code>?  Also, is there an easier way to accomplish this using iterators?</p>
