在C++中,不允许在没有显式强制转换的情况下为任何整数指针分配void*指针.这需要使用static_cast.
但这是怎么回事:
int* iptr = new int;
Run Code Online (Sandbox Code Playgroud)
我知道新的运算符定义如下:
void* operator new(size_t);
Run Code Online (Sandbox Code Playgroud)
C++如何处理这个问题?我知道这是一个基本问题,但很重要.我也知道低级代码必须使用void.但这项任务如何合法?iptr是指向int的指针,new返回指向void的指针,它应该触发"错误:从'void*'到'int*'[-fpermissive]"无效转换的消息.
我问题的最接近的线程在这里.我试图用gcc编译以下代码:
#include <malloc.h>
class A
{
public:
A(){};
~A(){};
};//class A
int main()
{
A* obj = (A*) malloc( sizeof(A) );
if(obj==0) return 1 ;
obj->A::A(); /*error: invalid use of 'class A' */
obj->A::~A();
free(obj);
return 0;
};//
Run Code Online (Sandbox Code Playgroud)
从命令行我编译代码:
$ g++ -o main main.cpp main.cpp: In function 'int main()': main.cpp:22: error: invalid use of 'class A'
你能指点我正确的方向吗?