我是 C++ 的新手,正在为使用数组和返回指针的想法而苦苦挣扎。
我Student在一个.h文件中有一个类:
class Student {
public:
// stuff
int* GetNumDaysPerCourse() const;
// stuff
private:
//stuff
int numDaysPerCourse[3];
// stuff
};
Run Code Online (Sandbox Code Playgroud)
我正在尝试在.cpp文件中实现它:
int* Student::GetNumDaysPerCourse() const {
return numDaysPerCourse;
}
Run Code Online (Sandbox Code Playgroud)
但我收到一条错误消息:
返回值类型与函数类型不匹配
我很困惑,因为查看其他问题,这看起来是一种有效的方法。
那么,如何在 C++ 中使用 getter 返回类成员数组?
当我尝试编译此代码时,出现此错误:
错误:从“const int*”到“int*”的无效转换
这是因为GetNumDaysPerCourse()是const 限定的,所以它的this指针指向一个const Student对象,因此它的numDaysPerCourse成员被视为const数据。您不能将 const 数据的地址分配给指向非常量的指针(没有显式类型转换,也就是说,但不要这样做),因为这将授予外部代码修改数据的权限(可能)存储在只读存储器中。
因此,您需要:
const从GetNumDaysPerCourse()以下位置删除限定符:public:
...
int* GetNumDaysPerCourse();
...
private:
...
int numDaysPerCourse[3];
...
};
Run Code Online (Sandbox Code Playgroud)
int* Student::GetNumDaysPerCourse() {
return numDaysPerCourse;
}
Run Code Online (Sandbox Code Playgroud)
GetNumDaysPerCourse()返回一个指向常量的指针:public:
...
const int* GetNumDaysPerCourse() const;
...
private:
...
int numDaysPerCourse[3];
...
};
Run Code Online (Sandbox Code Playgroud)
const int* Student::GetNumDaysPerCourse() const {
return numDaysPerCourse;
}
Run Code Online (Sandbox Code Playgroud)
GetNumDaysPerCourse()被调用的对象是可变的还是只读的:public:
...
int* GetNumDaysPerCourse();
const int* GetNumDaysPerCourse() const;
...
private:
...
int numDaysPerCourse[3];
...
};
Run Code Online (Sandbox Code Playgroud)
int* Student::GetNumDaysPerCourse() {
return numDaysPerCourse;
}
const int* Student::GetNumDaysPerCourse() const {
return numDaysPerCourse;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |