Создание экземпляра класса с параметрами

0

Это конструктор в классе:

Course(int courseId, Instructor instructor, string courseName, string dept) 
    : courseId(courseId)
    , instructor(instructor)
    , courseName(courseName)
    , dept(dept)
{ };

Моя проблема связана со вторым инструктором инструктора. Что именно это означает, потому что я никогда не видел смешивания двух классов, подобных этому?

  • 1
    Это означает, что вам нужен объект Instructor для создания Course (и копия этого объекта будет сохранена в созданном объекте Course )
  • 0
    ... так же, как вам нужны экземпляры std::string ...
Показать ещё 10 комментариев
Теги:
class
constructor

1 ответ

1
Лучший ответ

Это означает, что вам нужно передать ему объект Instructor, так же как первый параметр означает, что он принимает объект int, а третий и четвертый принимают string объекты. Например:

int courseId = 0;
Instructor instructor; // Here we default construct an Instructor
std::string courseName = "Foo";
std::string dept = "Bar";

Course my_course(courseId, instructor, courseName, dept);
//                         ^^^^^^^^^^
//              Here the Instructor is being passed

Это объявление instructor будет работать только в том случае, если у Instructor есть конструктор по умолчанию, который я предполагаю, что это не так. Если у конструктора для Instructor есть некоторые параметры, вам необходимо передать их так:

Instructor instructor(some, params, here);
  • 0
    На самом деле, вы также должны упомянуть эту маленькую проблему с именами, которая обсуждалась @barakmano и мной прямо выше.
  • 0
    @ πάνταῥεῖ Я не делаю этого и не вижу веской причины рекомендовать это. Я определенно не рекомендую предварительно / постфиксировать имена участников! Если бы вы могли придумать более подходящие имена для параметров или элементов, это было бы хорошо, но наклеивать маленькие символы на имена элементов не очень приятно в моих глазах. Их имена не должны отличать их - они уже различаются тем, что являются членами.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню