je class Personne (prénom, nom, adresse, âge) et les opérateurs surchargées < < et >> pour l'utiliser avec filestreams:Surcharger << and >> dans les classes héritées
ostream& operator<< (ostream& outStream, Person& person)
{
...
}
istream& operator>> (istream& inStream, Person& person)
{
...
}
Il fonctionne très bien - je peut lire et écrire facilement, mais j'ai ajouté deux classes héritées de Person: Student et Worker.
j'ai écrit pour les opérateurs surchargées, les très semblables à celles ci-dessus:
ostream& operator<< (ostream& outStream, Worker& worker)
{
...
}
istream& operator>> (istream& inStream, Worker& worker)
{
...
}
ostream& operator<< (ostream& outStream, Student& student)
{
...
}
istream& operator>> (istream& inStream, Student& student)
{
...
}
La seule différence sont deux champs dans chaque classe. Le problème est que lorsque j'utilise des opérateurs surchargés avec Student ou Worker, il semble que mon compilateur utilise des opérateurs pour personne. Probablement, il fait une conversion cachée de Student ou Worker à Person, mais par conséquent, ces champs supplémentaires ne sont pas écrits dans le fichier. en aval < < Les gens fonctionnent exactement comme en aval < < Étudiants ou offstrem Travailleurs. Peut-être que placer des déclarations d'opérateurs surchargées pour les classes héritées en premier, et pour Person plus tard dans le code résoudrait le problème, mais je ne trouve pas une solution élégante.
Si vous avez des idées sur la façon de gérer le problème ci-dessus, j'apprécierais.
Cela est probablement un problème avec le code où vous appelez << and >>. Pouvez-vous poster du code autour de cette zone? – Chowlett