Line help_line ();
Это не означает , что означает "help_line
должен быть экземпляром Line
, созданным с помощью конструктора по умолчанию".Это означает, что «help_line
должна быть функцией, реализованной где-то еще, которая не принимает аргументов и возвращает Line
экземпляр».
То, что вы хотите, пишется Line help_line;
без скобок.
Итак, вы получите следующее сообщение об ошибке:
'void std::vector<_Ty>::push_back(_Ty &&)' : cannot convert parameter 1 from 'Line (void)' to 'Line &&'
Line &&
- это параметр, ожидаемый push_back
.&&
здесь не имеет значения;для новичков это лучше всего рассматривать как своего рода соглашение о вызовах.Вы все еще просто передаете Line
, потому что это то, что вы собираете в векторе Line
s.
Line(void)
- это тип функций, которые не принимают аргументов и возвращаютLine
экземпляр ".(void)
- это еще один способ написания ()
для аргументов функции (это не рекомендуется в новом коде, но иногда требуется при взаимодействии с очень старым кодом C).