0 / 0 / 0
Регистрация: 26.06.2016
Сообщений: 65
|
||||||
1 | ||||||
Приведение указателя базового типа14.08.2016, 12:00. Показов 4002. Ответов 23
У меня не получается выполнить приведение указателя базового типа. Я, и static_cast пробовал, и dynamic_cast пробовал, но компилятор всё равно выводит сообщение, что ptra - это не указатель.
0
|
14.08.2016, 12:00 | |
Ответы с готовыми решениями:
23
Приведение типа указателя Приведение типа указателя на метод Создание указателя типа базового класса на экземпляр производного класса Вызов виртуального метода базового класса из указателя производного |
0 / 0 / 0
Регистрация: 26.06.2016
Сообщений: 65
|
|
15.08.2016, 13:16 [ТС] | 21 |
Так, а мне-то на моём примере как лучше скастить указатель или лучше его вообще не кастить, а просто указатель ptrb указать на &b, или как. На моём примере.
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
15.08.2016, 13:27 | 22 |
На твоем примере не понятно чего добиться нужно.
Ты можешь вполне безопасно скастить short * в char *, и посмотреть отдельные байты числа. Если short* кастить к int* на платформе, где int больше, чем short, то это приведет к UB, как я выше уже объяснил. Так что скажи что требуется (только не надо говорить "требуется скастить" - ведь когда мы говорим надо забить гвоздь, мы подразумеваем для чего: например, чтобы повесить картину. так и тут, касты без причины не делают).
0
|
0 / 0 / 0
Регистрация: 26.06.2016
Сообщений: 65
|
|||||||||||
15.08.2016, 13:57 [ТС] | 23 | ||||||||||
Как это не странно, но мне надо скастить именно без особой причины. Просто я только начал изучать базовый курс C++ и я сейчас просто составляю конспекты, как и что кастять. У меня уже есть конспект «type convertion».
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
||||||
15.08.2016, 15:18 | 24 | |||||
Сообщение было отмечено kokzahvas как решение
Решение
Лично я думаю, что от подобных конспектов нет толку. Лучше законспектировать свойства различных преобразований. Т.е. конспекты должны быть не по конкретным примерам преобразований, а по их типам. Примерно в такой структуре:
* static_cast - его свойства (что делает, когда применяется), пример; * reinterpret_cast - его свойства (что делает, когда применяется), пример; * dynamic_cast - его свойства (что делает, когда применяется), пример; * const_cast - его свойства (что делает, когда применяется), пример; * c-style преобразование - его свойства, примеры. А то если судить по твоим конспектам, то через static_cast нельзя преобразовать указатели. Но на самом деле можно, просто для этого должны быть соблюдены условия. Например каст в void * и обратно, это именно static_cast. Указатели в пределах иерархии классов также могут быть приведены через static_cast. У тебя этого нет в конспектах. Вот я и предлагаю тебе конспектировать эти условия, а не примеры кастов. Толку будет больше. Впрочем вот тебе пара комментариев по твоему наброску: Кликните здесь для просмотра всего текста
1
|
15.08.2016, 15:18 | |
15.08.2016, 15:18 | |
Помогаю со студенческими работами здесь
24
Приведение указателя на функцию Приведение void* указателя к типу Приведение void* к типу указателя на структуру Приведение указателя на void к другому типу? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |