#include <iostream>
#include <new>
#include <cstdlib>
using std::cout;
struct C{ };
struct A
{
void* operator new(std::size_t, C*, C*){ A a; return &a; }
};
A *a= new A; //candidate function not viable: requires 3 arguments, but 1 was provided
int main(){ }
我还没有理解这个错误。
如果分配的类型是类类型T或其数组,则在T的范围内查找分配函数的名称。如果此查找未能找到名称,或者如果分配的类型不是类类型,则分配函数的名称在全球范围内查找。
我们已经在库提供的全局范围内隐式定义了分配函数。怎么了 我期望将应用重载解决方案。
我也想了解,使用这种分配函数(带有三个参数)的目的是什么。
就像引号所说的那样,如果在类的作用域中查找分配函数找不到名称,它只会在全局作用域中查找分配函数。在您的情况下,它正在查找名称,因此不要在全局范围内查找它。唯一的问题是,分配函数的调用方式参数数量错误。
如果要确保使用全局分配功能:
A *a = ::new A;
如果要调用定义的分配函数,则需要执行以下操作:
A *a = new (someC, someOtherC) A;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句