Чем отличается reinterpret_cast <TYPE> (объект) от конструкции (TYPE) (объект)? Например:
unsigned short *m_BufferData;
...
long int * ptr1 = reinterpret_cast <long int *> ( m_BufferData ); //нет ошибки
long int * ptr2 = static_cast <long int *> ( m_BufferData ); //ошибка
long int * ptr3 = (long int *) ( m_BufferData ); //опять нет ошибки
И ещё вопрос:
Класс А агрегирует класс Б (в классе А есть член - указатель на объект класса Б).
В классе А есть член - указатель на функцию с определённым (неважно каким) прототипом.
В классе Б есть не статическая функция с таким же прототипом.
Как присвоить члену-указателю экземпляра класса А указатель на функцию экземпляра класса Б?
Или может перенести тему в раздел "программирование" ?
С++
-
- Неотъемлемая часть форума
- Сообщения: 434
- Зарегистрирован: 12 апр 2004, 11:00
- Откуда: г. Владивосток
- Контактная информация:
Re: С++
Вот тут сказано:
Я так понимаю член-указатель в классе A это указатель на обычную функцию - не член какого-либо класса? Тогда никак, потому что в реальности функция-член класса и обычная функция имеют разный тип, так как функции-члену неявно передаётся указатель на объект класса, для которого она вызывается. То есть присвоить можно, но ничего хорошего из этого не выйдет.Что делает приведение типов в стиле С: пытается использовать static_cast, если не получается, использует reinterpret_cast. Далее, если нужно, использует const_cast.