Вам не нужно так много приведений в C / Objective-C, вам просто нужно использовать одно приведение для простоты:
pHeader = (EBD_HEADER*)[self GetHeader];
При использовании приведений в стиле C ++ вам нужно два приведения, потому что одно отбрасываетconst
-ness и другой интерпретируют указатель на один тип для указателя на другой тип;промежуточное приведение к void*
является избыточным и должно быть удалено.
Однако в этом случае вы должны попытаться изменить код так, чтобы вам вообще не требовалось никаких приведений.Почему [self GetHeader]
возвращает const char*
вместо EBD_HEADER*
?Возвращен ли объект на самом деле постоянным?Если это так, вы должны объявить pHeader
как const EBD_HEADER*
, и вы не должны отбрасывать const
-ness;если нет, то [self GetHeader]
не должен возвращать тип const
.