簡體   English   中英

c ++ templates:創建一個與現有對象相同的typename對象

[英]c++ templates: create an object of a typename same as of an existing object

我在c ++中使用模板類。 我創建了一個類的對象,如下所示:

Node<int> *rootNode = (Node<int> *) malloc(sizeof(Node<int>));

現在我在Node中插入一些條目。 在我看到節點已滿后,我希望代碼創建一個與根節點具有相同類型名稱的新節點並存儲所需數據。 以下是我的插入方法:

template <typename T>
RC Node<T>::Insert(void *key)
{
    if(space() > 0) { // check if current node has ample space    
             // add data in the current node
    }
    else
    {
        siblingNode = new Node<T>();
        if (this->Split(siblingNode, key)) {
            if (siblingNode != NULL) {
                siblingNode.display();
            }
        }
    }
}
}

我嘗試顯示使用創建的新節點

siblingNode.display()

方法,但它給我編譯錯誤

request for member ‘display’ in ‘siblingNode’, which is of non-class type ‘Node<int>*’

如何確保siblingNode的類型名與調用insert函數的節點的類型名相同?

siblingNode是一個指針,因此您需要使用指針成員解除引用運算符:

siblingNode->display()

該錯誤告訴您,您要解除引用的類型是指針,而不是您需要與Node<T>具有相同的類型名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM