Ric*_*xie 1 c++ inheritance struct
我试图装饰节点结构,以允许单/双链表.我有以下代码:
struct node
{
Object* obj;
};
struct BasicNode: node
{
node* next;
};
Run Code Online (Sandbox Code Playgroud)
当我使用以下代码时,我收到一个错误:
temp->next = new BasicNode;
temp = temp->next;
Run Code Online (Sandbox Code Playgroud)
我把头定义为node* head;
编译器给我以下错误:"struct ListAsSLL::node has no member 'next'"在我的temp->next行.
我做错了什么?或者我做错的结构继承?感谢您的时间和帮助.
head是类型的BasicNode.BasicNode继承node这意味着如果你想分配给head你至少需要一个BasicNode不是这里的情况.如果您知道temp类型BasicNode并且想要使用它,则需要显式转换(称为向下转换,父类到子类):
head = static_cast<BasicNode*>(temp);
Run Code Online (Sandbox Code Playgroud)
然而,向上转换(从子类到父类)不需要显式转换.例如,如果您改为使用head某种类型,则node不必强制转换它.而且由于您只是访问obj,这可能是您想要的.
node* head = //something..;
//later on..
node* temp = new BasicNode;
temp->obj = nl;
head = temp;
Run Code Online (Sandbox Code Playgroud)
然后,如果您仍然知道head包含派生对象,就像BasicNode您可以再次显式地再次抛出它一样:
BasicNode* basicNode = static_cast<BasicNode*>(head);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |