私有变量无法正常工作的C++getter方法(只有Java经验)
C++ getter method for private variable not working properly(Only have Java experience)
我的头文件
class Roster {
private:
Degree degree = NETWORK;
int addFlag = 0;
Student* classRosterArray[5] = { nullptr, nullptr, nullptr, nullptr, nullptr };
public:
void add(string studentID, string firstName, string lastName, string emailAddress,
int age, int daysToComplete1, int daysToComplete2, int daysToComplete3, Degree degreeProgram);
void remove(string studentId);
void printAll();
void printByDegreeProgram(int degreeProgram);
void printDaysInCourse(string studentId);
void printInvalidEmails();
Student* getClassRosterArray();
~Roster();
};
我在CCP文件中的getter方法
Student* Roster::getClassRosterArray() {
return *classRosterArray;
}
我在中共的主要((
for (int k = 0; k < 5; k++) {
cout << "Student ID :: " << roster.getClassRosterArray()[k].getStudentId() << endl;
}
它只取出第一个 Student 对象,因为数组中的第二个索引是空的。
恳请帮助! 这是我第一次尝试C++!!
我将提出此更改:
Student* getClassRosterArray( int ) ;
...
Student* Roster::getClassRosterArray(int id) {
return classRosterArray[id];
}
...
for (int k = 0; k < 5; k++) {
cout << "Student ID :: " << roster.getClassRosterArray(k)->getStudentId() << endl;
}
若要在不丢失其大小信息的情况下检索成员,您可以这样做
class Roster {
private:
Student* classRosterArray[5] = { nullptr, nullptr, nullptr, nullptr, nullptr };
// ...
public:
auto getClassRosterArray() -> Student* (&)[5] { return classRosterArray;}
// ...
};
丑陋的语法:/
std::array<Student*, 5>
具有更规则的语法:
class Roster {
private:
std::array<Student*, 5> classRosterArray{{ nullptr, nullptr, nullptr, nullptr, nullptr }};
// ...
public:
std::array<Student*, 5>& getClassRosterArray() { return classRosterArray;}
// ...
};
由于Student
似乎不是多态的,因此不使用指针似乎更简单std::vector
:
class Roster {
private:
std::vector<Student> classRosterArray;
// ...
public:
std::vector<Student>& getClassRosterArray() { return classRosterArray;}
// ...
};
你声明了一个Student*
数组,换句话说,你声明了一个Student**
。
get 方法返回学生*而不是学生**或更好的学生*[]。
这会导致您的问题。换句话说,您只返回数组的第一个元素。
相关文章:
- 私有变量无法正常工作的C++getter方法(只有Java经验)
- 不一定获得成员价值的 getter 方法?
- 派生类继承的 getter,找不到返回正确值的方法
- 类中的类可以从外部类调用 getter 方法吗?
- C++ getter 方法调用构造函数
- 枚举器 C++ 的 setter 和 getter 方法
- 访问属性或使用 getter 方法
- getter 方法的推荐签名是什么?
- 如何编写getter方法,使其返回右值
- 调用简单getter方法后出错:basic_string::_S_create
- 从getter方法返回常量和非常量值
- 命名重载的getter方法:const和nonconst
- 除非指定关键字,否则无法调用 getter 方法 "this"
- C++Getter方法打印奇怪的数字
- Valgrind:getter方法中包含rdlock的线程加载冲突
- 在调用右值对象的getter方法时获取右值
- 指向对象的指针的私有矢量.如何使用getter方法访问这些对象
- 通过在getter方法上应用begin()获得的迭代器不允许访问指向列表的第一个元素
- getter方法中的Const引用
- 尝试返回同一类中的私有变量时C++ "Getter"方法抛出访问冲突