你不是在复制指针。您正在从一个复制值
data
从某个物体到另一个物体的成员
数据
某个物体的成员。但问题是,没有“那里”可以复制
到
.你给我分配了一大堆指针
arr3
,但这些指针后面没有对象,因此:
(arr3[k++])->data = (arr1[p++])->data;
调用未定义的行为。
我很确定这就是你拍摄的目的:
template<class T>
Node<T>** mergeArrays(Node<T> **arr1, Node<T> **arr2, int len1, int len2)
{
int p = 0, q = 0, k = 0;
Node<T> **arr3 = new Node<T> *[len1 + len2];
while (p < len1 && q < len2)
{
if ((arr1[p])->data < (arr2[q])->data)
{
arr3[k++] = arr1[p++];
}
else
{
arr3[k++] = arr2[q++];
}
}
while (p < len1)
{
arr3[k++] = arr1[p++];
}
while (q < len2)
{
arr3[k++] = arr2[q++];
}
return arr3;
}