我在分配新数组时遇到问题,这是我的旧功能,它完全可以买到现在我正在尝试将其更改为const
StudentType* SortStudentsByName(StudentType* student, int numStudents)
{
int startScan,
minIndex;
for (startScan = 0; startScan < (numStudents-1); startScan++)
{
minIndex = startScan;
for ( int index = startScan; index < numStudents; index++)
{
if( student[index].studentName < student[minIndex].studentName)
minIndex = index;
}
if(minIndex!=startScan)
{
StudentType temp = student[minIndex];
student[minIndex] = student[startScan];
student[startScan] = temp;
}
}
cout << endl;
cout << "List of Students sorted Alphabetically "<< endl;
DisplayAllStudents(student, numStudents);
return student;
}
我认为这与我注释掉的三行有关,这是我的代码:
StudentType* SortStudentsByName(const StudentType* student, int numStudents)
{
StudentType* New_StudentType;
//Allocate a new array
New_StudentType = new StudentType[numStudents];
int startScan,
minIndex;
for (startScan = 0; startScan < (numStudents); startScan++)
{
minIndex = startScan;
for ( int index = startScan; index < numStudents; index++)
{
if( student[index].studentName < student[minIndex].studentName)
minIndex = index;
}
New_StudentType = student[minIndex]; //error 1
student[minIndex] = student[startScan];// error 2
student[startScan] = New_StudentType;// error 3
}
cout << endl;
cout << "List of Students sorted Alphabetically "<< endl;
DisplayAllStudents(student, numStudents);
return New_StudentType;
}
答案 0 :(得分:0)
在你的新功能中你有这个论点:
const StudentType* student
在这种情况下,const可以在类型的任何一侧,因此这相当于
StudentType const* student
所以student
是指向const StudentType
的指针。接下来请注意,有两种方法可以声明一个const指针:一种方法可以阻止您更改指向的内容,另一种方法可以阻止您更改指向的DATA。
因此,在您的情况下,您可以更改指针值,但不能使用此指针更改数据。
继续,您列出的第一个错误是:
New_StudentType = student[minIndex]; //error 1
这是错误的,因为您尝试将student
数据minIndex
分配给指针New_StudentType,这些是不兼容的类型。
您标记的下一个错误是:
student[minIndex] = student[startScan];// error 2
如上所述,您可以更改指针值但不更改学生数据,您尝试使用此语句更改数据。
错误3有同样的问题:
student[startScan] = New_StudentType;// error 3