Ich versuche gerade ein etwas größeres Projekt mit dem Visual Studio 2012 Release Candidate, C++, zu kompilieren. Das Projekt wurde/wurde jetzt mit dem VS2010 kompiliert. . (Ich nur gierig bin die C++ 11 Dinge zu bekommen, also habe ich versucht :)Warum wurde die Bad_alloc (const char *) in Visual C++ 2012 privat gemacht?
Abgesehen von Dingen, die ich von mir erklären kann, verwendet das Projekt den Code wie folgt aus:
ostringstream ostr;
ostr << "The " __FUNCTION__ "() failed to malloc(" << i << ").";
throw bad_alloc(ostr.str().c_str());
Die Compiler beschwert sich jetzt
error C2248: 'std::bad_alloc::bad_alloc' : cannot access private member declared
in class 'std::bad_alloc'
... was wahr ist. Diese Version des Konstruktors ist jetzt privat.
Was war der Grund, diese Version des Konstruktors privat zu machen? Wird von C++ 11-Standard empfohlen, diesen Konstruktor nicht mit dem Argument zu verwenden?
(kann ich mir vorstellen, dass, wenn Zuweisung fehlgeschlagen ist, kann es zu Problemen führen, um zu versuchen, etwas Neues zu bauen. Es ist aber nur meine Vermutung.)
Danke, Petr
Vielen Dank für die ausgearbeitete Antwort. – pepr