Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c++;模板:创建类型名称与现有对象相同的对象 我在C++中使用模板类。我创建了一个类的对象,如下所示: Node<int> *rootNode = (Node<int> *) malloc(sizeof(Node<int>)); Node*rootNode=(Node*)malloc(sizeof(Node));_C++_Templates - Fatal编程技术网

c++;模板:创建类型名称与现有对象相同的对象 我在C++中使用模板类。我创建了一个类的对象,如下所示: Node<int> *rootNode = (Node<int> *) malloc(sizeof(Node<int>)); Node*rootNode=(Node*)malloc(sizeof(Node));

c++;模板:创建类型名称与现有对象相同的对象 我在C++中使用模板类。我创建了一个类的对象,如下所示: Node<int> *rootNode = (Node<int> *) malloc(sizeof(Node<int>)); Node*rootNode=(Node*)malloc(sizeof(Node));,c++,templates,C++,Templates,现在,我在节点中插入几个条目。在看到节点已满后,我希望代码创建一个与根节点具有相同类型名的新节点,并存储所需的数据。下面是我的插入方法: 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

现在,我在节点中插入几个条目。在看到节点已满后,我希望代码创建一个与根节点具有相同类型名的新节点,并存储所需的数据。下面是我的插入方法:

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();
            }
        }
    }
}
}
模板
RC节点::插入(空*键)
{
如果(space()>0){//检查当前节点是否有足够的空间
//在当前节点中添加数据
}
其他的
{
同级节点=新节点();
if(此->拆分(同级节点,键)){
if(同级节点!=NULL){
siblingNode.display();
}
}
}
}
}
我尝试显示使用创建的新节点

siblingNode.display()

方法,但它给了我编译错误

request for member ‘display’ in ‘siblingNode’, which is of non-class type ‘Node<int>*’
请求“兄弟节点”中的成员“显示”,该节点为非类类型“节点*”

如何确保siblingNode的类型名与调用插入函数的节点的类型名相同?

siblingNode
是指针,因此需要使用指针成员取消引用操作符:

siblingNode->display()

错误告诉你你的撤销类型是一个指针,而不是你需要有与<代码>节点< /COD> .< /P>的初学者相同的类型名,你不应该用<代码> > -> /Cuth>运算符来取消<代码> SbLink节点< /Cord>对象吗?不要在C++中使用<代码> MalCube()/<代码>。更不用说混合

malloc
new
(您的一些节点是
malloc
-ed,一些是
new
-ed,使用不同于用于分配的机制释放是未定义的行为,您将被绑定一段调试时间。另外请注意,根据
malloc
使用的
节点
模板的定义,实际上可能会导致未定义的行为。)THJASP在这里看到的是书目,我猜你会从这一个获益,@ TJASP:我不知道,我建议你坚持几周,然后继续C++的问题。一些答案包含很多“好的实践”,而且会有关于永不沉没的评论。