void FileManager::CloseFile(File * const file)
{
for (int i = 0; i < MAX_OPEN_FILES; ++i)
{
if ((_openFiles[i] == file) == true)
{
_openFiles[i] == NULL;
}
}
...
_openFiles est membre privé de FileManager et est juste un tableau de fichier * 's
Lorsque le même test exact est effectuée dans la fenêtre immédiate i obtenir un résultat de 1!?!Comment ce simple test d'égalité de pointeur peut-il échouer?
EDIT le == true a été ajouté purement comme un contrôle de santé mentale !!
si je peux faire une suggestion: Je pense que vous devriez vraiment utiliser une structure de données plus avancées ici. Un hachage quelconque empêcherait la recherche à chaque fois que cette fonction est appelée, et je ne peux qu'imaginer qu'il existe d'autres fonctions de ce type dans une classe "manager" comme celle-ci. Les classes de manager sont aussi quelque chose d'une odeur de code dans beaucoup de cas ... – rmeador
La classe est à ses balbutiements, et le hachage est sur la liste! Mais merci pour la suggestion car elle confirme mes oppinions .. –