Pour revenir a ton probleme, il existe une specification (que je n'ai jamais utilise) qui permet de dire au compilateur qu'il n'y aura pas d'exceptions pendant la construction (ou tout autre methode) de ton objet:
Et la ca compile, ce qui prouve bien que c'etait bien le probleme. Par contre __declspec(nothrow) est Microsoft specific donc pas portable. Sur gcc l'equivalent ca serait __attribute__((nothrow)).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class C { void operator delete(void *,size_t ) { } public: __declspec(nothrow) C() { } }; int _tmain(int argc, _TCHAR* argv[]) { new C; }
Il semble que l'equivalent a __declspec(nothrow) (en tout cas sur VC2005) soit:
A savoir qu'en l'absence de cet attribut, c'est comme si le constructeur etait declare comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 C() throw() { }
VC: http://msdn.microsoft.com/en-us/library/49147z04.aspx
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 C() throw(...) { }
Bon week end a tous![]()
Partager