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复制到list作为引用,但是这里的副本是(我认为)作为一个值,当函数结束时,没有任何变化,列表保持为NULL。 如何通过引用复制它并将温度保存在列表中?
答案 0 :(得分:3)
检查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
。)