void FileManager::CloseFile(File * const file)
{
for (int i = 0; i < MAX_OPEN_FILES; ++i)
{
if ((_openFiles[i] == file) == true)
{
_openFiles[i] == NULL;
}
}
...
_openFiles ist ein privates Mitglied des Filemanagers und ist nur ein Array von File * 's
Wenn der exakt gleichen Test in dem Direkt-Fenster ausgeführt wird, i ein Ergebnis von 1 bekommen!?!Wie konnte dieser einfache Zeigergleichheitstest fehlschlagen?
BEARBEITEN das == true wurde rein als Plausibilitätsprüfung hinzugefügt !!
wenn ich einen Vorschlag anbiete: Ich denke, dass Sie wirklich eine erweiterte Datenstruktur hier verwenden sollten. Ein Hash irgendeiner Art würde die Notwendigkeit für die Suche jedes Mal verhindern, wenn diese Funktion aufgerufen wird, und ich kann mir nur vorstellen, dass es in einer solchen "Manager" -Klasse noch andere solche Funktionen gibt. Manager-Klassen sind in vielen Fällen auch etwas von einem Code-Geruch ... – rmeador
Die Klasse ist in den Kinderschuhen, und Hashing steht auf der Liste! Aber danke für den Vorschlag, da er meine Meinung bestätigt. –