'operator new'的第一个形式参数必须'size_t'

first formal parameter to 'operator new' must be 'size_t'

本文关键字:参数 size operator new 第一个      更新时间:2023-10-16

我得到这个错误" 'operator new'的第一个形式参数必须是'size_t'"当我尝试像这样编译SMTH时:

void* operator new(MyStd::UInt);

我使用visual studio 2013 express在64位机器上运行。

有谁知道,为什么这个错误发生?

如果您需要进一步的信息,请告诉我……这个项目是巨大的!

正是错误信息所说的:第一个参数必须是类型为size_t

错误说明了一切。operator new的第一个参数必须为std::size_t类型,您可以使用其他类型

除了它不能,真的,因为std::size_t是一个类型定义;它必须具有std::size_t被定义为的类型。的最简单的方法是将其声明为std::size_t。这在过去是有效的:大概,在过去,MyStd::UInt是与std::size_t相同类型的类型定义。现在,其中一个类型定义发生了变化。只需声明operator new的第一个参数为size_t,将自动成为正确的类型;声明它是其他任何东西,并且您猜测std::size_t是如何声明的(可以更改)从一个实现到另一个实现,甚至从一个版本到另一个)。