【问题标题】:'operator new' : function does not take 2 arguments'operator new' : 函数不接受 2 个参数
【发布时间】:2013-11-18 19:47:08
【问题描述】:

由于某种原因,我似乎无法让我的新职位工作。基于这个问题,我设置了correctly

但是,我继续收到错误:

'operator new' : 函数不接受 2 个参数

这是我的代码:

char * p = new char [sizeof(Node) * 5];
Node* node = new(p) Node();

其中Node 是一个链表节点。我试图根据另一个堆栈溢出问题来简化它,但我仍然遇到同样的错误:

char *buf  = new char[sizeof(int)]; // pre-allocated buffer
int *p = new (buf) int;

有人知道我为什么会遇到这个问题吗?

非常感谢任何帮助!

PS,这行得通:

Node* node = new Node();

【问题讨论】:

标签: c++ placement-new


【解决方案1】:

很可能,您没有包含<new>。您需要它来声明placement-new 的标准形式。

【讨论】:

  • 哇,你可以错过的小事!谢谢!
  • @Mike Seymour - +1 以获得最佳答案。关于我面临的案例的问题:我正在使用 Microsoft C/C++ 编译器版本 19.13.26128(适用于 x86),就我而言,为了消除问题中的错误,我需要使用添加全局新关键字之前的范围。因此,利用问题代码中的一个示例,我写道: Node* node = ::new (p) Node(); - 你知道为什么会这样吗? (另请注意,编译器不会要求我包含 头文件)。谢谢!!
  • 值得一提的是,另一种可能发生这种情况的情况是,如果您通过具有自定义新运算符的placement-new构造一个类。当我遇到这个问题时,我花了很多时间尝试在任何地方包含
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
相关资源
最近更新 更多