C++ 如何在类函数中编辑向量的私有成员?

C++ 如何在类函数中编辑向量的私有成员?,c++,class,pointers,vector,C++,Class,Pointers,Vector,我在做我的工作,输入一些分数,打印出分数、排名和通过/不通过。我正在使用C++ 17,编辑我的排名有一个错误。 我曾尝试将我的向量放入头文件上的“setRankPass”函数中,但根本不起作用 头文件 #pragma once #include <vector> class Score { public: Score(int score) : _score{ score } { } int getScore() { retur

我在做我的工作,输入一些分数,打印出分数、排名和通过/不通过。我正在使用C++ 17,编辑我的排名有一个错误。 我曾尝试将我的向量放入头文件上的“setRankPass”函数中,但根本不起作用

头文件

#pragma once
#include <vector>

class Score {
public:
    Score(int score)
        : _score{ score } {
    }
    int getScore() {
        return _score;
    }
    int getRank() {
        return _rank;
    }
    bool getPass() {
        return _pass;
    }
    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;
        }
    }
private:
    int _score{ 0 };
    int _rank{ 0 };
    bool _pass{ false };
};
#pragma一次
#包括
班级成绩{
公众:
分数(整数分数)
:_得分{score}{
}
int getScore(){
返回(u)分数;;
}
int getRank(){
返回_秩;
}
bool getPass(){
回程通行证;
}
void setRankPass(常量标准::向量*分数,整数大小){
对于(inti{0};i不能在此范围内没有
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;
    }
}
请注意,在此修复之后,您必须更改主菜单中的以下行:

v[a].setRankPass(&rank, counter);
关于这一行:

v[a].setRankPass(rank, counter);

在此范围内没有
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;
    }
}
请注意,在此修复之后,您必须更改主菜单中的以下行:

v[a].setRankPass(&rank, counter);
关于这一行:

v[a].setRankPass(rank, counter);

@Minjae Lee没有声明类成员函数中使用的变量_rank和rank。您的类定义不完整。请发布。
vectorank;rank[0]
返回一个没有
setRankPass
方法的int。你是说
向量秩
?对不起,我没有上传我的全部源代码。好吧,编译器是对的:
没有在那里声明。没有名为
的局部变量,没有名为
的函数参数,也没有class成员调用了
rank
。此代码应该做什么?您还使用命名空间std;
遗漏了错误的
的真实位置,这很不方便地咀嚼
rank[i]
,并告诉您它没有意义,因为它需要一个模板参数。
\u rank=rank[i]
毫无意义。@Minjae Lee没有声明类成员函数中使用的变量_rank和rank。您的类定义不完整。请发布。
vectorank;rank[0]
返回一个没有
setRankPass
方法的int。你是说
向量秩
?对不起,我没有上传我的全部源代码。好吧,编译器是对的:
没有在那里声明。没有名为
的局部变量,没有名为
的函数参数,也没有class成员调用了
rank
。此代码应该做什么?您还使用命名空间std;
忽略了错误的
的真实位置,这很不方便地咀嚼
rank[i]
,并告诉您它没有意义,因为它需要一个模板参数。
\u rank=rank[i]
没有意义。