Добавление открытых или закрытых членов в класс приводит к различным ошибкам во время выполнения - PullRequest
0 голосов
/ 17 октября 2019

Так что по какой-то причине при попытке добавить переменную «стек» к классу (общедоступному или частному) в этом многоклассном проекте это вызовет ошибку времени выполнения:

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

или

terminate called after throwing an instance of 'std::length_error'
  what():  deque::_M_new_elements_at_front

или

Segmentation fault (Core Dumped)

Кажется, это зависит от типа стека, который я пытаюсь добавить.

Я закомментировал все методы (в.cpp и .h) за исключением конструктора, и вещи, которые я пытаюсь добавить, нигде не упоминаются, но всегда выдают ошибку. Странно то, что у меня уже есть стек, который отлично работает, хранится как общедоступный, я просто не могу больше добавлять.

Из Main.cpp:

int main(int, char* argv[])
{
    Scanner funScanner = Scanner(argv[1]);
    DatalogProgram funProgram = DatalogProgram(funScanner.tokenize());

}

Из моей DatalogProgram.h file:

class DatalogProgram
{
    public:
        DatalogProgram(stack <Token> tokensFromScanner);
        stack <Token> tokenStack; //<-- this one seems to work fine



    private:
        stack <Predicate> schemes;
        stack <Predicate> facts;
        stack <Rule> rules;        //These 4 stacks are based on other classes, but even the int stack gives a similar error
        stack <Predicate> queries;
        stack <int> testStack; //<-- this stack also gives a run-time error
};

Есть идеи, почему это может быть сделано?

ОБНОВЛЕНИЕ: я запускал файл своего проекта через make-файл, поэтому я попытался запустить его без него,и я получил еще одну ошибку,

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_M_construct NULL not valid

После поиска этой ошибки, похоже, что должна быть строка, установленная в нулевой указатель, поэтому я в настоящее время ищу это.

...