我们试图用特定参数重载delete []运算符。哪种方式可以称之为?我们使用GNU编译器和编译器获得误差随所有这些样品:重载delete []具有特定参数的运算符
#include<memory>
using namespace std;
typedef unsigned int P;
struct A{
static allocator<A>m;
P p;
void*operator new[](size_t s){return m.allocate(s);}
void operator delete[](void*p,int s){m.deallocate((A*)p,s);}
void operator delete[](void*p,size_t t,int s){m.deallocate((A*)p,s);}
};
int main(){
A*a=new A[10];
//delete (5) []a; //expected ',' before 'a'
//delete[5]a; //expected ';' before ']' token
//delete[] (5) a; //type ‘int’ argument given to ‘delete’, expected
//delete[]a (5); //a’ cannot be used as a function
//delete[]((int)5)a; //type ‘int’ argument given to ‘delete’, expected pointer
//delete[]a((int)5); //‘a’ cannot be used as a function
return 0;
}
不要将您收到的错误作为解读者的谜; **发布他们,*逐字*,与您的问题**。 – WhozCraig 2014-09-27 20:00:36
好吧..这样做.. – ncomputers 2014-09-27 20:02:05
数组被删除像这样:'delete [] a;' - 是否重写了delete []'操作符。 – 2014-09-27 20:23:19