Вопрос по function, c++, variables, arguments – c ++ изменить аргумент переменной функции

2

я хочу изменить мою переменную, переданную в качестве аргумента этой функции:

bool verifyStudent(string id, string name, int grade, int points, string type) {
if(!verifyId(id)){
    cerr << "Please enter 8 charactes id! format: YYMMDDCC\n";
    cin >> id;
    return false;
} else
if(!verifyName(name)){
    cerr << "Please enter name to 35 characters!\n";
    cin >> name;
    return false;
} else
if(!verifyGrade(grade)){
    cerr << "Please enter class between 8 and 12!\n";
    cin >> grade;
    return false;
} else
if(!verifyPoints(points)){
    cerr << "Please enter points between 0 and 300!\n";
    cin >> points;
    return false;
} else
if(!verifyType(type)){
    cerr << "Please enter 1 charater type! format: R,r - regional, D,d - district, N,n - national, I,i - international\n";
    cin >> type;
    return false;
} else {
    return true;
}

}

как я должен получить доступ к данной переменной и изменить ее, когда она не проверена другой функцией?

вот как я вызываю функцию:

verifyStudent(iId, iName, iGrade, iPoints, iType);
Каждый звонокverifyStudent позволяет исправить не более одного значения и не проверяет исправление, поэтому я надеюсь, что вы вызываете его в циклеwhile (!verifyStudent(iId, iName, ...))) ;но тогда в реалистичных системах хорошо иметь возможность для них также отменить операцию, если они понимают, что не имеют всей информации для передачи и т.д. Tony Delroy
Хотя я с радостью отвечаю на такие вопросы, учтите, что это базовые знания C ++, которые можно найти и изучить в любых книгах или руководствах в первых нескольких главах / уроках. Vincent

Ваш Ответ

2   ответа
2

Цитата:

Therefore, C++ has two parameter passing mechanisms, call by value (as in Java) and call by reference. When a parameter is passed by reference, the function can modify the original. Call by reference is indcated by an & behind the parameter type.

Here is a typical function that takes advantage of call by reference [...]

void swap(int& a, int& b) { [...] }

Больше здесь - & gt; A3.5. функции

8

Для того, чтобы изменить аргументы, вам придется принятьreferences:

bool verifyStudent(string& id, string& name, int& grade, int& points, string& type) 

Хотя я бы сказал, что функция неverifyStudent столько, сколькоverifyAndCorrectStudentIfNeeded.

Похожие вопросы