“Incomplète de type non autorisé ” lors de la création de std::ofstream objets
Visual Studio génère cette Erreur Étrange:
Incomplète de type non autorisé
Lorsque j'essaie de créer un std::ofstream objet. Voici le code que j'ai écrit à l'intérieur d'une fonction.
void OutPutLog()
{
std::ofstream outFile("Log.txt");
}
chaque fois qu'il rencontre ce Visual Studio jette l'Erreur. Pourquoi Cela Se Produit?
avez-vous d'inclure
<fstream>
?OriginalL'auteur arun49 vs | 2015-03-05
Vous devez vous connecter pour publier un commentaire.
@Mgetz dit, vous avez probablement oublié d'
#include <fstream>
.La raison pour laquelle vous n'avez pas une
not declared
erreur et au lieu de celaincomplete type not allowed
erreur a à voir avec ce qui se passe quand il y a un type qui a été "avant déclarée", mais pas encore entièrement définis.Regardez cet exemple:
Avis, nous ne pouvions pas réellement instancier un objet Foo ou consulter son contenu jusqu'à ce que après la vraie définition. Lorsque nous n'avons que la déclaration anticipée disponibles, nous ne pouvons en parler par pointeur ou d'une référence.
Ce qui est probablement ce qui se passe est que vous avez inclus quelques en-tête iostream qui avait de l'avant-déclaré
std::ofstream
une manière similaire. Mais la définition même destd::ofstream
est dans le<fstream>
en-tête.(Note: Dans l'avenir, assurez-vous de fournir un Minimale, De Manière Complète, Vérifiable Exemple au lieu d'une seule fonction de votre code. Vous devez fournir un programme complet qui illustre le problème. Cela aurait été mieux, par exemple:
...aussi, la "Sortie" est généralement considéré comme un mot complet, et non pas deux comme "Sortie")
OriginalL'auteur HostileFork