C++/g++ cygwin_exception::open_stackdumpfile: Dumping stack-trace *.exe.stackdump
Hier ist mein main in Airport.cpp:
#include <iostream>
#include "Airport_Queue.h"
#include "Airplane.h"
#include <stdlib.h>
int main(){
Airplane *b = new Airplane(true);
(*b).come();
(*b).go();
std::cout << "........." << std::endl;
Airport_Queue *landing_queue = new Airport_Queue(5);
Airplane *a0 = new Airplane(true);
(*landing_queue).enqueue(a0); //error here
//(*landing_queue).dequeue();
return 0;
Dies ist mein Airport_Queue.cpp
#include "Airport_Queue.h"
Airport_Queue::Airport_Queue(unsigned n){
Airplane** a = new Airplane*[n];
capacity = n;
size = 0;
head = tail = 0;
}
Airport_Queue::~Airport_Queue(){
for (size_t i = 0; i < size; i++){
delete a[i];
}
delete [] a;
}
void Airport_Queue::enqueue(Airplane* airplane){
if (!(*this).isFull()){
a[tail] = airplane;
(*a[tail]).come();
tail = (tail+1) % capacity;
size++;
}
else{
std::cerr << "Queue is full." << std::endl;
}
}
Airplane* Airport_Queue::dequeue(){
if (!(*this).isEmpty()){
size_t x = head;
(*a[head]).go();
head = (head+1) % capacity;
size--;
return a[x];
}
else{
std::cerr << "Queue is empty." << std::endl;
return NULL;
}
}
bool Airport_Queue::isEmpty(){
if (size == 0)
return true;
else
return false;
}
bool Airport_Queue::isFull(){
if (size == capacity)
return true;
else
return false;
}
int Airport_Queue::getSize(){
return size;
}
Ich habe auch eine Klasse namens Flugzeug. Der Befehl, den ich verwenden, zu kompilieren und zu verknüpfen ist
g++ -std=c+11 -Wall -g -o airport Airport.cpp Airplane.cpp Airport_Queue.cpp
Wie kann ich dieses Problem beheben Laufzeitfehler? Der Fehler ist, wenn ich Anrufe enqueue
. Dann bekomme ich
4 [main] - Flughafen 3796 cygwin_exception::open_stackdumpfile: Dumping stack-trace zu Flughafen.exe.stackdump
Bitte. Und ich danke Ihnen.
- Mach das nicht zu deinem post. Wenn Sie Lesen meine Antwort, es wird keinen Sinn mehr. Was Sie tun sollten, ist (1) Halten Sie den ursprünglichen code und fügen Sie den aktualisierten code an der Unterseite, oder (2) Erstellen Sie eine komplett neue post mit den aktualisierten code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Probleme sehe ich:
Haben Sie eine member-variable
size
. Sie müssen zwei -capacity
undsize
.In
Airport_Queue::Airport_Queue
Benötigen Sie:
In
Airport_Queue::~Airport_Queue
Benötigen Sie:
In
Airport_Queue::enqueue
Folgenden auf die Logik von den Destruktor, die folgende Zeile muss geändert werden.
Ändern:
In
Airport_Queue::dequeue
Haben Sie einen ähnlichen Fehler wie oben. Ändern Sie die Zeile
zu
In
Airport_Queue::isFull
Ändern Sie die Zeile
zu
Ich hoffe, das behebt die meisten der Probleme. Wenn es gibt keine, die ich verpasst, hoffentlich wird Sie Sie finden können.