赋给struct的const结构

时间:2014-11-19 19:54:08

标签: visual-c++

我有一个简单的功能:

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版本。

有没有办法让这项工作,或者我必须做一些不同的事情?

1 个答案:

答案 0 :(得分:0)

不一样。您正在尝试将 const指针指定给非常量指针。换句话说:尝试将Mutable指针指向常量StudentType到非const指针。 将声明为const的内容更改为no-cont确实有意义,这意味着您可以更改常量的值。

您要做的是使用浅拷贝将一个对象复制到另一个对象。为此,您必须将对象复制到另一个不指向指针的对象。你必须取消引用指针。:

*returnStudent = *student

或者如果结构包含指针类型,则浅拷贝不会。您将必须复制每个成员,负责复制内存指针指向,或写入复制构造函数。