我得到这个错误" '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
是如何声明的(可以更改)从一个实现到另一个实现,甚至从一个版本到另一个)。