为什么这不是dynamic_cast?

Max*_*cat -4 c++

我试图了解一些C++功能并编写了一些测试.但是,当我尝试编译时,我收到以下错误(如下).为什么会发生这种情况,以及正确的方法是什么?我正在尝试将32位指针转换为8位指针并在转换后打印出内容.

cast3.cpp:22:错误:不能用dynamic_cast'bigptr'(类型'uint32_t*')来输入'uint8_t*'(目标不是指针或类的引用)

码:

#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void castme(uint8_t small[], int size);

int main(void)
{
    uint8_t *small;

    uint32_t big = 0x01234567;
    uint32_t *bigptr = &big;

    small = dynamic_cast<uint8_t *>(bigptr); // Line 22
    castme(small, sizeof(big));

    return 0;
}

void castme(uint8_t small[], int size)
{
    for (int i = 0; i < size; i++)
    {
        printf("0x%x\n",  small[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

Wol*_*olf 6

dynamic_cast仅适用于具有虚拟成员函数的类.要在彼此之间转换原始指针类型,您需要reinterpret_cast.