2013-11-06 5 views
1

Я получаю ошибку компиляции:Идентификатор bad_alloc не распознан?

ошибки C2061: синтаксическая ошибка: идентификатор «» bad_alloc

Я использовал кусок кода ниже в других проектах, прежде чем, с различным распределением памяти в блоке Ьги , без проблем. Я надеялся, что кто-то может объяснить мне, почему bad_alloc не распознается VS10, несмотря на то, что это не вызывает проблемы, связанные с использованием других программ? Скорее всего, я пропустил какую-то незначительную синтаксическую вещь, но я потратил часы, пытаясь понять это, и в этот момент я чувствую, что я, вероятно, слеп к ошибке. Спасибо за помощь!

try 
{ 
    node* tbr = new node(); 
    return tbr; 
} // End try allocation 

catch(bad_alloc) 
{ 
    throw OutOfMemoryException(); 
} // End catch(bad_alloc) 
+2

У вас есть 'using namespace std' в вашем коде? если нет, попробуйте 'catch (std :: bad_alloc)'. – stellarossa

+0

Как предлагает stellarossa, тип исключения на самом деле называется 'std :: bad_alloc'. –

ответ

6

bad_alloc определен в заголовке new.

#include <new> 

В пространстве имен std.

using namespace std 
+0

Это закончилось тем, что отлично работает, так что спасибо ардженцу и стеллароссе. Тем не менее, мне любопытно, почему это вызвало бы проблему в этом классе, но не в другом. Очевидно, что трудно ответить на такой вопрос, не глядя на другой код, но у меня не было никаких стандартных библиотек, включенных в другой класс, и я не использовал namespace std. – acwatson421

Смежные вопросы