ElementType& *first
Объявляет переменную first
как, я думаю, указатель на ссылку на ElementType
объект. Я не уверен, что это даже допустимый C ++.
&*first
Если вы вернете это, вы вернете адрес разыменованного объекта, на который указывает указатель first
, что, как я считаю, равносильно возвращению first
.
Если first
- указатель на первый элемент ElementType, просто верните разыменованный объект как *first
.
Кстати, это не единственная вещь, которая выглядит неправильно в вашем коде. Я не думаю, что бросать строковые указатели - это хорошая практика (бросать объект, полученный из std::exception
, такой как std::out_of_range
), и не включать спецификацию исключений (это приводит к ненужным накладным расходам). Так что вы, вероятно, после чего-то более похожего:
ElementType& front()
{
if (empty()) {
throw std::out_of_range("Empty Vector");
}
return *first;
}