我們試圖用特定參數重載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