2010-09-10 6 views
3

J'ai un code surchargeant l'opérateur new. Le code ci-dessous fonctionne très bien sous Linux (gcc4x), mais pas Windows (Visual C++ 2008 Express Edition)Opérateur d'erreur new []: la fonction ne prend pas 1 argument

Le code sous Visual Studio 2008 rapporte Express Edition

erreur C2660: opérateur new []: la fonction ne fonctionne pas prendre 1 arguments

class dummy{}; 
void* operator new[] (size_t size, dummy gcp) 
{ 
    return ::operator new[](size); //error 
} 

int main() 
{ 
    dummy dummyobj; 
    dummy* ptr = new (dummyobj) dummy[5]; 
    return 0; 
} 
+1

À quoi sert "dummy gcp"? –

+0

Réussi sous VS 2010 Pro. – Puppy

+2

Il est généralement utile si vous ajoutez un commentaire dans le code à la ligne sur laquelle le compilateur se plaint. Cela aide dans les situations où les gens ne sont pas familiers avec le format d'erreur spécifique du compilateur, car il permet de déduire ce que le compilateur essaie de vous dire. –

Répondre

11

Vous pourriez avoir besoin de #include <new>.