派生节点类

时间:2018-01-15 07:02:00

标签: c++

我有Base类,Derived类,然后是Node类,它派生自Derived类。通常,我会做结构节点,我有Object对象(作为节点中的数据)。但是,在派生Node类的情况下没有任何意义,因为已经调用了Derived的构造函数。所以,我的问题是 - 如何将数据分配给节点?

class Base
{
    payload;
};

class Derived : public Base
{
    payload;
};

class Node : public Derived
{
    Node(Object & object);
    /*
    Previously I'd have struct with Object object_, and I 
    would do object = object_ (which would call an overload to
    make a deep copy). But, in this case we already have an instance 
    of Derived, and making another one doesn't seem right. 
    So, my question is to how access that instance to assign 
    passed object to it? Or am I doing something completely stupid?
    */
}

1 个答案:

答案 0 :(得分:1)

您可以type conversion(课堂上课)或copy constructor

class Node : public Derived
{
        public:
                Node() {
                }
                /** type conversion operator **/
                operator Derived() {
                        /**  code **/
                }
                /** copy constructor **/
                Node(Node &nd_obj) : Derived(Derived d_obj){    
                        cout<<"Node copy const called "<<endl;
                        cout<<"payload = "<<nd_obj.payload<<endl;
                }
};
int main() {
        Derived d1;
        Node Nd1;
        d1 = Nd1;//type conversion

        Node Nd2 = d1;//copy constructor, make sure exact match is there

}