У меня есть заголовочный файл, который выглядит, как это до сих пор: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, похоже, решила проблему, поэтому я не знаю, какова была первоначальная проблема.
Декларация кажется прекрасной. Зачем использовать #pragma один раз вместе с #ifndef, который должен содержать объявление класса. http://en.wikipedia.org/wiki/Include_guard Опубликовать соответствующий код, в котором вы создаете экземпляр своего класса. – aslg
Я не думаю, что вы включили плохой код. 'std :: bad_alloc' связан с распределением памяти. Вы что-то делаете, например, «новый траверс»? Обычно это было бы неправильно, поскольку вам не нужно выделять перечисленные типы. Рассматривайте их как 'int' или' float'; просто объявите их и используйте их. – andand
ах, да, я только что узнал о цели #pragma один раз, поэтому не обновил эту часть заголовка. Я просто очистил проект с помощью xcode, и теперь он не сбой. Надеюсь, проблема не вернется. – jag