[英]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.