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++的问题。一些答案包含很多“好的实践”,而且会有关于永不沉没的评论。