我正在使用类在c ++中实现递归数据结构。我在使用“this”指针时遇到了一些麻烦。
在一个函数中,我需要修改“this”指针。但是这是不允许的。我该怎么做?我在某处读到你需要将“this”指针传递给该函数来改变它。但是我不清楚这一点。这表现得像python的“自我”吗?一个例子很棒
编辑:
void insert(int key)
{
if (head == NULL)
{
/* I need to insert in beginning of structure */
List* tmp;
tmp->key = key;
tmp->next = this;
this = tmp; /* This does not work */
}
}
谢谢!
答案 0 :(得分:2)
您无法修改this
指针,因为它的行为就像声明T* const
一样。你可以做的是在类中保存一个指向你自己类型的指针,并修改它。
class foo
{
/* ... */
private:
foo* p; // this can be modified
};
答案 1 :(得分:1)
您无法修改this
,期间。您需要重新构建程序,以便不需要这样做。
答案 2 :(得分:0)
插入您尝试的方式的最佳方法是创建双链表,而不是单个链表(只有下一个指针)。换句话说,您应该有一个指向列表中上一个节点的先前指针,以便使用this指针正确插入。否则,您需要从此节点的父节点插入。
即使用双链表:
Node* tmp = new Node;
tmp->key = key;
this->previous->next = tmp;
tmp->previous = this->previous;
tmp->next = this;
this->previous = tmp;
编辑: 不要忘记"这个"是""简单地""一个内存地址,所以你要改变的是它包含的内容。