Ich habe hier stundenlang gesessen und versucht, das herauszufinden. Ich konnte kein ähnliches Problem finden (obwohl ich sicher bin, dass es gemacht wurde). Also weiter zu meiner Frage. Wenn ich das kompiliere, ist es in Ordnung.
Ich sollte hinzufügen, dass unsortedList Book * ist, die eine Struktur ist.Ausnahmefehler während der Laufzeit beim Schreiben in das Objekt
string tit = tempBook->title;
string act = tempBook->action;
string aut = tempBook->author;
string sub = tempBook->subject;
char* tm = tempBook->time;
unsortedList[unsortedArrayLength].title;
unsortedList[unsortedArrayLength].action;
unsortedList[unsortedArrayLength].author;
unsortedList[unsortedArrayLength].subject;
unsortedList[unsortedArrayLength].time;
Allerdings, wenn ich dies zu kompilieren, erhalte ich eine Fehlermeldung:
Ausnahme bei 0x5AC6516F geworfen (vcruntime140d.dll) in Assign.exe: 0xC0000005: Zugriffsverletzung Schreibort 0x00000000.
string tit = tempBook->title;
string act = tempBook->action;
string aut = tempBook->author;
string sub = tempBook->subject;
char* tm = tempBook->time;
unsortedList[unsortedArrayLength].title = tit;
unsortedList[unsortedArrayLength].action = act;
unsortedList[unsortedArrayLength].author = aut;
unsortedList[unsortedArrayLength].subject = sub;
unsortedList[unsortedArrayLength].time = tm;
Und dann erscheint es an dieser Stelle Fenster memcpy.asm mit dem Cursor nach oben:
CopyUpByteLoop:
mov al, byte ptr [esi]
mov byte ptr [edi], al
inc esi
inc edi
dec ecx
jne CopyUpByteLoop
Die Definition von struct Buch wie gewünscht:
struct Book
{
std::string title;
std::string author;
std::string subject;
char* time;
std::string action;
};
Dies ist die komplette Funktion :
void DB::insertBook(Book* tempBook)
{
using namespace std;
unsortedArrayLength++;
string tit = tempBook->title;
string act = tempBook->action;
string aut = tempBook->author;
string sub = tempBook->subject;
char* tm = tempBook->time;
unsortedList[unsortedArrayLength].title = tit;
unsortedList[unsortedArrayLength].action = act;
unsortedList[unsortedArrayLength].author = aut;
unsortedList[unsortedArrayLength].subject = sub;
unsortedList[unsortedArrayLength].time = tm;
system("cls");
cout << "You have " << unsortedList[unsortedArrayLength].action <<":\n" << endl <<
unsortedList[unsortedArrayLength].title << endl <<
unsortedList[unsortedArrayLength].author << endl <<
unsortedList[unsortedArrayLength].subject << endl <<
"on " << unsortedList[unsortedArrayLength].time << endl << endl;
printToLog(tempBook);
}
Bitte hilf Obi-Wan. Du bist meine einzige Hoffnung ...
Ist Ihre Variable 'unsortedArrayLength' eine Konstante? Wenn nicht, könnten Sie Probleme mit dem Array richtig initialisiert werden. Eigentlich auch, ich bin mir nicht sicher Deshalb würden Sie die Variable array length als Index verwenden, wodurch Sie einen Index nach dem Ende des Arrays zurückgeben würden, was ein klassischer "off by one" -Fehler ist. Möglicherweise müssen Sie weitere Informationen über die von Ihnen entworfene Art veröffentlichen Ihr Array und die Art, wie Sie es indizieren – ciphermagi
Ich wollte nur bearbeiten, dass unsortedList vom Typ Book * ist. Mein Index == 1. Es gibt 1 Objekt im Index von einer vorherigen Operation in einer anderen Funktion. – yorTsenoJ
Bitte einbeziehen Die Definition von struct Book. – ciphermagi