ошибка: невозможно преобразовать Elem в Elem * для аргумента 1 в void addHead (Elem *, Elem *) - PullRequest
1 голос
/ 12 октября 2011

Я компилирую свой код с помощью g ++ -g и получаю сообщение об ошибке в заголовке.

Ошибка связана с созданной мной функцией, ее подпись:

void addHead( Elem *&start , Elem *newStart );

и я передаю этой функции эти две переменные:

Elem * head;    
Elem * tempEl;

, чтобы она выглядела так:

addHead( *head , *tempEl );

Фактическая функция:

void addHead( Elem start , Elem newStart )
{
Elem listItem;

listItem = newStart;
*listItem.next = start;
start = listItem;
}

Он предшествует второму аргументу в начале связанного списка, начинающегося с первого аргумента.

Я вырвал свои волосы с этим.Независимо от того, что я делаю, я получаю эту ошибку!

cannot convert Elem to Elem* for argument 1 to void addHead(Elem*, Elem*)

Редактировать: Забыл, что эта ошибка тоже там:

error: invalid initialization of reference of type Elem*& from expression of type Elem

1 Ответ

3 голосов
/ 12 октября 2011

Это довольно специфично: вы передаете Elem, но это требует Elem*.В частности, head имеет тип Elem*, но вы передаете *head: типа Elem.

Кроме того, ваша подпись определения не соответствует вашему определению, поэтому даже когда вы исправляетевызов, вы получите ошибку компоновщика, когда он не может найти addHead(Elem*, Elem*).Определения должны точно их подписи (точнее, декларации).Конечно, ни одно из этих изменений не исправит фактическую реализацию addHead(), но это ваша домашняя работа:)

...