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

时间:2014-07-29 09:18:06

标签: c++ visual-studio-2013 size-t

我收到此错误“第一个正式参数为'operator new'必须为'size_t'” 当我尝试像这样编译smth时:

void* operator new(MyStd::UInt);

我使用64位计算机上运行的visual studio 2013 express。

有谁知道,为什么会出现这个错误?

如果您需要更多信息,请告诉我......这个项目很大!

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

错误消息的确切含义:第一个参数必须是size_t类型。

这正是the reference所暗示的。

答案 2 :(得分:0)

除非它真的不能,因为std::size_t是一个typedef; 它必须具有typedef所需的任何类型std::size_t。该 最简单的方法是将其声明为std::size_t。 回复:它过去有效:大概在过去, MyStd::UInt是与std::size_t相同类型的typedef。 现在,一个或另一个typedef已经改变。只是宣布 operator new的第一个参数为size_t,它会 自动成为正确的类型;宣布它是其他任何东西,并且 你猜测std::size_t是如何宣布的(可以改变) 从一个实现到另一个,甚至从一个版本到 另一个)。