在C++中构造访问私有数据成员的方法
Const methods to access private data members in C++
我的项目在这里https://www.dropbox.com/s/foq27lafefoes7d/lab3.zip?dl=0我还有很多其他错误,但在问这个问题之前,我确保我没有试图重新定义字符串文字或任何东西。
void Player::Display() const
{
cout << "nPlayer Name: " << GetName() <<
"nGrade: " << GetGrade() << "nG.P.A. " << GetGPA() << endl;
}
问题发生在这里,我遇到了访问冲突,有没有办法在保持Display常量的同时解决这个问题,或者这个代码是否有效,而我的问题在其他地方,并且没有被调试器捕获?
//Getters FOUND OUT THESE NEED TO BE CONSTANT RETURN TYPES AS WELL
const char* Player::GetName() const {return m_name;}
const int Player::GetGrade() const {return m_grade;}
const double Player::GetGPA() const {return m_gpa;}
更相关的代码,所以我了解到,要用这样的const方法读取私有数据成员,你必须做出两个const"承诺",不更改私有的
class Player
{
public:
char* GetName() const;
int GetGrade() const;
double GetGPA() const;
private:
char* m_name;
int m_grade;
double m_gpa;
};
如果没有得到任何编译错误,可能的原因是从GetName()
返回char*
而不是const char*
。如果名称是用只读内存初始化的(即使用像"Tom"
这样的双引号),并且您试图向GetName()
返回的指针写入字符,则会出现访问冲突。
相关文章:
- C++ 使用派生类方法更改基类数据成员
- 将私有数据成员作为默认参数传递给该类的公共方法时出错
- 在不编写显式 setter 的情况下修改私有类数据成员的便捷方法是什么?模板有用吗?
- 将非静态数据成员作为默认参数传递给方法
- 使用来自基类方法的派生类数据成员
- 如何仅通过类方法修改类公共数据成员
- 子类是否也在 c++ 中继承私有数据成员?但通过超类的公共方法访问
- 我如何调用我的3个数据成员中每个人的设置方法,然后显示由我的设置方法设置的值
- 如何在类中的其他方法中访问私有数据成员 2D 数组
- 是C 静态对象中类的静态数据成员和静态方法
- 将数据从构造函数传输回调用方法时更改数据成员
- 比较来自同一类型的两个对象的数据成员的最简单方法
- 为具有一个数字数据成员的类定义所有比较运算符的方便方法
- 使本机代码访问java方法和数据成员
- 在派生类中使用提取运算符(>>)的方法以及在C++中处理静态数据成员的方法
- 类静态方法访问其静态数据成员
- 类方法访问其数据成员
- 将数据成员的生存期限制为一个方法
- 有关C++/组件数据布局、数据成员访问、方法的一般问题
- 返回对类静态数据成员的引用的正确方法是什么?(我正在使用Qt,以防万一它有所作为)