C ++ начинающих вопрос, как получить доступ к переменным - PullRequest
0 голосов
/ 03 марта 2020

Итак, в основном мои вопросы включают, когда использовать параметры, а когда они мне не нужны. Я стараюсь учиться на примерах, и этот пример мне не совсем понятен: я добавлю вопросы в ту часть, где я не понимаю что-то после «//» в правой части строки. Может быть, кто-то может дать мне хорошее объяснение, что мне нужно делать, в каком сценарии или хороших источниках, где я могу найти это самостоятельно.

ученик класса с атрибутами publi c:

#include <iostream>


class Student
{
public:
    int stud_ID;
    char stud_Name[22];
    int stud_Age;
    };


функция, которую я хочу включить в int main ():

void studentinformation(Student); //#1Why do I must include (Student) in this fuction?              ->  
                                  // If I dont add this parameter in here, there is no connection ->
                                  //to the function studentinformation(s) in int main.
                                  //Why exactly is that the case ?


основная функция для получения информации:

int main(){
    Student s;

    std::cout<<"Type in ID:";
    std::cin >> s.stud_ID;
    std::cout<<"Type in youre Name:";
    std::cin.ignore();   //
    std::cin.getline(s.stud_Name, 22); //#2 Why is std::getline(std::cin, s.stud_Name) not working ?->
    std::cout<<"Type in age:";         //#3 Or is there a better alternative ?
    std::cin >> s.stud_Age;

    studentinformation(s);             //#4 Why do I must include the parameter s ?
    return 0;

}


функция для печати информации:

void studentinformation(Student s)  // #5 Why do I must include the Parameters ?
{   std::cout<<" Student information:"<< std::endl;
    std::cout<<" Student ID:" << s.stud_ID << std::endl;

    std::cout<<" Name:" <<  s.stud_Name<< std::endl;

    std::cout<<" Age:" << s.stud_Age<< std::endl;
}

1 Ответ

2 голосов
/ 03 марта 2020
  1. studentinformation() - это бесплатная функция, не имеющая связи ни с одним экземпляром Student, поэтому вам необходимо предоставить ее в качестве аргумента.
  2. std::getline() работает на std::string s ...
  3. ... и вы сделаете себе одолжение, если измените char stud_Name[22]; на std::string stud_Name;.
  4. По той же причине, что и в 1.
  5. По той же причине, что и в пунктах 1, 4 и 5, задаются те же вопросы.

В качестве альтернативы можно было бы вместо этого сделать studentinformation() Student функцией-членом. Затем вы можете позвонить s.studentinformation();, чтобы напечатать информацию об этом конкретном студенте.

...