我有一个简单的功能:
StudentType* SortStudentsByName(const StudentType* student, int numStudents)
{
StudentType* returnStudent = new (nothrow) StudentType[numStudents];
returnStudent = student; // error
}
它一直在说Type const StudentType* cannot be assigned to StudentType*
,这是荒谬的,因为它的确切类型相同,只是一个常数。
如果我从函数参数列表中删除const
,它就可以工作。
我不允许删除const
,因为该数组不应该被修改。
一些重要的事情:
(1)两个数组在运行时构造为相同的大小,由另一个参数确保。
(2)bitcopy应该处理这个,它处理非const版本。
有没有办法让这项工作,或者我必须做一些不同的事情?
答案 0 :(得分:0)
不一样。您正在尝试将 const指针指定给非常量指针。换句话说:尝试将Mutable指针指向常量StudentType到非const指针。 将声明为const的内容更改为no-cont确实有意义,这意味着您可以更改常量的值。
您要做的是使用浅拷贝将一个对象复制到另一个对象。为此,您必须将对象复制到另一个不指向指针的对象。你必须取消引用指针。:
*returnStudent = *student
或者如果结构包含指针类型,则浅拷贝不会。您将必须复制每个成员,负责复制内存指针指向,或写入复制构造函数。