2015-06-09 2 views
-1

У меня есть заголовочный файл, который выглядит, как это до сих пор:C++ перечисляемого переменных bad_alloc ошибка

#pragma once 
#ifndef __Wandering2__Seed__ 
#define __Wandering2__Seed__ 
#include <stdio.h> 
#include "ofMain.h" 
#include "Controls.h" 
#endif /* defined(__Wandering2__Seed__) */ 


class Seed { 
public: 

enum Traversal {FLOAT, WALK, FLY, ORBIT}; 
enum Medium {M_WATER, M_VOID, AIR}; 
enum SurfaceShape {SPHERE, PLANE}; 
enum SurfaceType {S_WATER, S_VOID, GROUND, NONE}; 

Traversal traversal; 
Medium medium; 
SurfaceShape sShape; 
SurfaceType sType; 

of3dPrimitive getShape(); 
float getRadius(); 

}; 

Когда я запускаю свою программу, я получаю следующее сообщение об ошибке:

libc++abi.dylib: terminating with uncaught exception of type std::bad_alloc: std::bad_alloc 

я происхожу из фон Java, поэтому я уверен, что я неправильно перечисляю свои перечисления. Если я прокомментирую объявления переменных перечисления (а не объявления типов), программа работает нормально, что я предполагаю, потому что недостаточно памяти для выделения этих четырех переменных перечисления. Как объявить эти переменные enum, чтобы весь класс имел к ним доступ, и поэтому программа не сбой?

Спасибо!

Редактировать: Я бы добавил более подходящий код, если он был; Я не называю «новым» нигде в любом из перечислений. Очистка продукта с помощью Xcode, похоже, решила проблему, поэтому я не знаю, какова была первоначальная проблема.

+2

Декларация кажется прекрасной. Зачем использовать #pragma один раз вместе с #ifndef, который должен содержать объявление класса. http://en.wikipedia.org/wiki/Include_guard Опубликовать соответствующий код, в котором вы создаете экземпляр своего класса. – aslg

+2

Я не думаю, что вы включили плохой код. 'std :: bad_alloc' связан с распределением памяти. Вы что-то делаете, например, «новый траверс»? Обычно это было бы неправильно, поскольку вам не нужно выделять перечисленные типы. Рассматривайте их как 'int' или' float'; просто объявите их и используйте их. – andand

+0

ах, да, я только что узнал о цели #pragma один раз, поэтому не обновил эту часть заголовка. Я просто очистил проект с помощью xcode, и теперь он не сбой. Надеюсь, проблема не вернется. – jag

ответ

1

Очистка продукта в Xcode устраняет проблему.