void SMatrix::setElement(int i, int j, double data)
{
Node* temp = new Node(data, i, j, NULL, NULL);
addNode(temp,(*this->rowsArr[i])); // this->rowsArr[i] is also Node*
}
void SMatrix::addNode(Node* temp, Node& list)
{
if (&list == NULL)
list = *temp;
}
所以我尝试将 temp 复制到列表作为引用,但这里的拷贝(我认为)是作为一个值,当函数结束时,没有任何变化并且列表保持为 NULL。 我如何通过引用复制它并将临时文件保存在列表中?
最佳答案
检查 if (&list == NULL)
永远不会触发,因为对象的地址永远不会是空指针。
您可能想做的是通过引用传递指针:
void SMatrix::addNode(Node * temp, Node * & list)
{
if (list == NULL) { list = temp; }
}
然后调用它:
Node* temp = new Node(data, i, j, NULL, NULL);
addNode(temp, this->rowsArr[i]);
如果没有添加节点,这当然会泄漏内存! (所以也许您应该将 else { delete temp; }
添加到 addNode
。)
关于c++ - 指针作为函数参数的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34463968/