我收到此错误“第一个正式参数为'operator new'必须为'size_t'” 当我尝试像这样编译smth时:
void* operator new(MyStd::UInt);
我使用64位计算机上运行的visual studio 2013 express。
有谁知道,为什么会出现这个错误?
如果您需要更多信息,请告诉我......这个项目很大!
答案 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
是如何宣布的(可以改变)
从一个实现到另一个,甚至从一个版本到
另一个)。