title: error C2664 :cannot convert argument from 'Node<int>* ' to 'int'
body: <p>Node.h:</p>
  
  <pre><code>#include &lt;memory&gt;
  using namespace std;
  
  template &lt;typename T&gt;
  class Node
  {
    private:
       T m_Data;
       shared_ptr&lt;Node&lt;T&gt;&gt; pre_node,next_node;
  
    public:
       Node(T iData, Node* pre_ptr = nullptr, Node* next_ptr = nullptr) 
         :m_Data(iData),pre_node(make_shared&lt;Node&gt;(pre_ptr)),
          next_node(make_shared&lt;Node&gt;(next_ptr))
  };
  </code></pre>
  
  <p>main.cpp</p>
  
  <pre><code>#include "Node.h"
  
  int main()
  {
     Node&lt;int&gt; head(1);
  
     system("pause");
  
     return 0;
  }
  </code></pre>
  
  <p>I get an error when try to run the code:</p>
  
  <pre><code> error C2664: 'Node&lt;int&gt;::Node(const Node&lt;int&gt; &amp;) throw()' : cannot convert argument 1   
   from 'Node&lt;int&gt; *' to 'int'
  </code></pre>
  
  <p>Can someone explain the problem and the way to correct it?  </p>