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