2012-03-15 4 views
1

ОК, поэтому я сделал класс под названием «Курсы с частными функциями-членами», «Имя курса», «creditHours», «Класс» и «CourseNumber».Как передать строку указателю на массив объектов?

Поскольку это домашнее задание, и мы просто переместили указатели и динамическое распределение памяти, Мне нужно прочитать, сколько курсов было сделано студентом, динамически создать массив типа курса и предложить пользователю ввести информацию о курсы. Так инструктор хочет, чтобы это было сделано.

Ниже приведена функция, которую я создал для создания и заполнения массива, но я не уверен, как ее на самом деле заполнить.

Course readCourseArray(int coursesTaken) 
{ 
    cout<<"\nHow many courses has the student taken?\n"; 
    cin>>coursesTaken; 

    Course *courses = new Course[coursesTaken]; 

    for(int count = 0; count < coursesTaken; count++) 
     { 
      cout<<"Enter name for course "<<count+1<<endl; 
      getline(cin,courses[count].courseName); 
      } 

    return *courseArray; 

} 

Моя проблема - часть getline. Я получаю красный squiggle, и он говорит, что имя курса недоступно, и я не могу подумать о другом способе выполнения цикла.

В моем файле спецификации класса У меня есть

void setCourseName (string _courseName) 
{courseName=_courseName;}; 

Но я не знаю, как бы использовать, чтобы цикл через массив либо.

+4

Вы можете использовать 'setCourseName', как этот' String temp; GetLine (CIN, температура); Курсы [count] .setCourseName (temp); ' – twain249

+0

Кажется, что это сработает! Спасибо, я был занят, пытаясь подумать о том, как использовать временный массив, но это проще:] – sircrisp

ответ

1

Похоже, что courseName является переменной частного члена. private означает, что вы не можете получить к нему доступ за пределами класса. Чтобы использовать getline, создайте временную строку:

string temp; 
getline(cin, temp); 
courses[count].setCourseName(temp); 
1

courseName является частной переменной, поэтому вы не можете получить к ней доступ. Вот что вам следует делать:

  1. Внесите временные изменения std::string.
  2. Используйте getline на этой строке.
  3. Пропустите эту строку до setCourseName.