繁体   English   中英

C ++继承的结构

[英]C++ Inherited Structs

我试图装饰节点结构,以便允许单/双链表。 我有以下代码:

    struct node
    {           
        Object* obj;
    };

    struct BasicNode: node
    {
            node* next;
    };

当我使用以下代码时,出现错误:

temp->next = new BasicNode;
    temp = temp->next;

我将head定义为node* head;

编译器给我以下错误:在我的temp->next行中, "struct ListAsSLL::node has no member 'next'"

我做错了什么? 还是我做结构继承错了? 感谢您的时间和协助。

head的类型为BasicNode BasicNode继承了node ,这意味着如果要分配给head ,则至少需要一个BasicNode ,在这里不是这种情况。 如果您知道temp的类型为BasicNode并且要使用它,则需要显式BasicNode转换(称为向下转换,从父级转换到子级):

head = static_cast<BasicNode*>(temp);

向上转换(从子类到父类)不需要显式的强制转换。 例如,如果将head设置为node类型,则无需强制转换。 而且由于您仅访问obj ,所以这可能就是您想要的。

node* head = //something..;

//later on..
node* temp = new BasicNode;
temp->obj = nl;
head = temp;

然后,如果您仍然以某种方式知道head包含派生对象(例如BasicNode ,则可以始终再次将其BasicNode

BasicNode* basicNode = static_cast<BasicNode*>(head);

您应该声明head为

node* head...;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM