Преобразование аргумента для функции, принимающей arg как 'const arg * &' - PullRequest
0 голосов
/ 10 февраля 2012

Вот проблема, с которой я сталкиваюсь при восстановлении старого кода

, вот еще один -

, поэтому вот определение функции: -

int shen_get_entity_from_list(const ENTITY_LIST& list, const ENTITY*& e);

и вот способ определения переменных

ENTITY *t_ent = NULL, *p_e = NULL, *s_e = NULL, *t_e = NULL;

теперь, когда я вызываю эту функцию

s_pos = shen_get_entity_from_list(sortedACISfeatureList, s_e);

, это дает мне следующую ошибку

ошибкаC2664: 'shen_get_entity_from_list': невозможно преобразовать параметр 2 из 'ENTITY *' в 'const ENTITY *&'

Ответы [ 3 ]

1 голос
/ 10 февраля 2012

Переменная s_e должна быть объявлена ​​как:

const ENTITY* s_e = NULL;

, чтобы соответствовать объявлению функции.Это говорит о том, что вы не будете использовать указатель s_e для изменения ENTITY, на которое он указывает, после вызова функции.

0 голосов
/ 10 февраля 2012

не является ли ссылка уже константным типом?и требует значения во время самого создания?

ссылки на нулевой указатель недопустимы.

из-за всего этого я не думаю, что эта проблема разрешима

0 голосов
/ 10 февраля 2012

Попробуйте переместить const:

int shen_get_entity_from_list(const ENTITY_LIST& list, ENTITY* const& e);

Это дает вам const-ссылку на тип, который вы передаете, а не неконстантную ссылку на указатель на const ENTITY.

...