建构者系列

时间:2015-02-09 19:29:46

标签: c++ constructor

我写过这个Node类:

template<class T>
struct Node{
    Node() : content(), col(RED), parent(0), left(0), right(0) {}
    Node(const Node& orig) : content(orig.content), col(orig.col), parent(orig.parent), left(orig.left), right(orig.right) {}
    virtual ~Node() {}
    Node<T>& operator= (const Node<T>& node);
    template <class sT>
    friend std::ostream& operator<<(std::ostream& out,const Node<sT>&node);
    T content;
    Color col;
    Node<T> *parent,*left,*right;
};

现在我将在std ::对中的Node内创建一个Node对象,我写了这个:

Node<Node< pair<int,char> > > n1 (Node<pair<int,char> >( pair<int,char>(45,'a') ));

但是编译器向我显示了这个错误:

main.cpp:31:84: error: no matching function for call to ‘Node<std::pair<int, char> >::Node(std::pair<int, char>)’

获得我想要的确切语法是什么?

1 个答案:

答案 0 :(得分:3)

您缺少构造函数:Node(const T& x);