指针混淆c++; 我有以下实际工作来学习C++,我花了很长时间寻找答案,阅读我所有的工作,但是我有点困惑,我能不能澄清一下我在哪里出错了。代码如下所示: SafeArray& SafeArray::operator =(const SafeArray& other) { //Add code here return *this; }

指针混淆c++; 我有以下实际工作来学习C++,我花了很长时间寻找答案,阅读我所有的工作,但是我有点困惑,我能不能澄清一下我在哪里出错了。代码如下所示: SafeArray& SafeArray::operator =(const SafeArray& other) { //Add code here return *this; },c++,pointers,C++,Pointers,我们必须实现将一个数组分配给另一个数组的代码。现在,如果我正确理解了代码,那么该方法将采用一个名为other的常量“SafeArray”的形式参数。SafeArray之后的&表示传递了实际数组本身,而不是副本,而const表示不能更改它。类似地,该方法返回实际数组本身,而不是它的副本 因此,我认为这将是一个创建指针的简单案例,引用“other”的内存位置,然后返回取消引用的结果。在我试图编写这段代码的过程中,我认为我没有运气 我试着做了如下的事情: SafeArray* ptr = &o

我们必须实现将一个数组分配给另一个数组的代码。现在,如果我正确理解了代码,那么该方法将采用一个名为other的常量“SafeArray”的形式参数。SafeArray之后的&表示传递了实际数组本身,而不是副本,而const表示不能更改它。类似地,该方法返回实际数组本身,而不是它的副本

因此,我认为这将是一个创建指针的简单案例,引用“other”的内存位置,然后返回取消引用的结果。在我试图编写这段代码的过程中,我认为我没有运气

我试着做了如下的事情:

SafeArray* ptr = &other; //This should have created a SafeArray pointer to the memory location of the array "other".
这里的问题是我得到了错误:

main.cpp:31:23: error: invalid conversion from ‘const SafeArray*’ to ‘SafeArray*’ [-fpermissive]
我想这是因为我试图把一些我不允许改变的东西变成我可以改变的东西

我可以这样编写代码:

const SafeArray* = &other;

但是我也不能正确地返回值。我很明显在理论上误解了一些东西,我想,有人能解释一下我遗漏了什么吗。我非常乐意自己编写代码,但我不能完全掌握这个方法调用。

要正确定义这个操作符,只需
安全数组
对象的内容
其他
作为参数传递到


了解如何完成此功能的唯一方法是了解
SafeArray
类的内容(即数据成员)。

您可能需要对
other
进行深度复制,以
。因为other是
常量,在将其分配给此之前,您需要制作一份副本。在这种情况下,SafeArray只接受整数作为输入。我设置的两个数组是“x(10)”,它初始化长度为10的数组,然后是一个数组“y(5)”,它初始化长度为5的数组。在本例中,他们还将x[3]设置为42或其他值。从那里我得到了y=x的赋值。在本例中,我假设复制不起作用,因为数组的长度不同。@gRnt,然后使分配给它的数组的长度与分配给它的数组的长度相匹配。这是一个运行时计算的值,根据你的构造函数使用一个参数,而不是你的类使用一个模板参数。我创建了如下数组:SafeArray z(other.length_uz);然后我尝试运行一个for循环,它表示z[I]=other[I];但我仍然有const的问题(我显然没有正确地复制它们),我想我会继续努力的