В этой области нет rank
векторной переменной:
void setRankPass(const std::vector<int>* scores, int size) {
for (int i{ 0 }; i < size; i++) {
_rank = rank[i];
}
double average = static_cast<double>(_rank) / size * 100;
if (average <= 10) {
_pass = true;
}
else {
_pass = false;
}
}
Вы вызываете функцию следующим образом:
for (int a{ 0 }; a < v.size(); a++) {
v[a].setRankPass(&rank, counter);
}
Но переменная, которая у вас есть в области действия serRankPass
, это баллы. Я предполагаю, что вы хотели сделать что-то подобное:
void setRankPass(const std::vector<int> &rank, int size) { // Pay attention to & and not * (reference instead of pointer)
_rank = 0; // initialize to 0 and not junk value
for (int i{ 0 }; i < size; i++) {
_rank += rank[i]; // += instead of = (add and not overwrite)
}
double average = static_cast<double>(_rank) / size * 100;
if (average <= 10) {
_pass = true;
}
else {
_pass = false;
}
}
Обратите внимание, что после этого исправления вам придется изменить следующую строку внутри вашей основной:
v[a].setRankPass(&rank, counter);
к этой строке:
v[a].setRankPass(rank, counter);