请告诉我为什么编译器不允许这种类型转换...错误编译器显示的是“从float *到int *的无效static_cast”
#include<iostream>
using namespace std;
int main()
{
float f=45.678;
float *a;
a=&f;
int *d;
cout<<static_cast<int *>(a);
}
答案 0 :(得分:1)
static_cast
是一个演员,它会在演员表合法的情况下进行编译时检查。
请考虑以下关于何时合法投票的示例:
从编译器的角度来看,float*
到int*
的转换是没有意义的。如果您想进行此类转换,则应使用reinterpret_cast
。