我有以下实际工作来完成学习C++,我一直花费很长时间寻找答案并阅读我的所有工作,但我有点困惑,我可以澄清我在哪里我错在这里。代码如下所示:指针混淆C++
SafeArray& SafeArray::operator =(const SafeArray& other) {
//Add code here
return *this;
}
我们必须实现将一个数组分配给另一个数组的代码。现在,如果我正确理解该代码,该方法需要一个名为其他的常量“SafeArray”的形式参数。 SafeArray之后的&意味着实际的数组本身被传递,而不是一个副本,而const意味着它不能被改变。同样,该方法返回实际的数组本身,而不是它的副本。
因此,我想认为这将是一个简单的情况下创建一个指针,引用“其他”的内存位置,然后返回去引用的结果。在我试图实际编写这个想法时,我没有运气。
我试图做类似下面的东西:
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;
但我不能返回值正确要么。我在理论上显然误解了一些理论上的假设,有人可以解释我错过了什么。我非常乐意自己编写代码,但我无法完全掌握此方法调用。
你大概应该做一个'other'到'this'的深层副本。 – chris 2013-04-09 03:50:11
因为其他是'const',所以在分配给它之前,你需要制作它的副本。 – Patashu 2013-04-09 03:50:17