2010-06-12 1 views
-1

Ce problème m'ennuie. Au lieu d'attendre l'entrée, il se ferme juste. J'ai essayé de comprendre cela depuis un moment maintenant. Des idées?Flux d'entrée C++ n'attendant pas d'entrée avec surcharge de l'opérateur d'extraction

istream& operator>>(istream& is, Account &a) { 
    cout << "Enter an accoutn number: "; 
     is >> a.accountNo; 
     cout << endl; 
    cout << "Balance: "; 
     is >> a.bal; 
    return is; 
    } 
+0

Aïe! Aie! Aie! Aie! Aie! Aie! Aie! Aie! Aie! Aie! Aie! Aie! Ne faites pas de "cout" à l'intérieur de votre opérateur istream. C'est tout simplement mal. Ça me fait mal à la tête. –

+0

Vous devriez nous montrer où vous utilisez ceci. Est-ce 'cin >> an_account;'? Pouvez-vous nous montrer plus de code? –

Répondre

1

Lorsque je l'ai mis dans le programme suivant, il a bien fonctionné (bien qu'il ne fonctionnerait pas si bien si vous avez essayé de lire un compte de quoi que ce soit, mais std::cin):

#include <iostream> 

struct Account { 
    int accountNo; 
    int bal; 
}; 

using std::ostream; 
using std::istream; 
using std::cout; 
using std::endl; 

istream& operator>>(istream& is, Account &a) { 
    cout << "Enter an account number: "; 
    is >> a.accountNo; 
    cout << endl; 
    cout << "Balance: "; 
    is >> a.bal; 
    return is; 
} 

ostream &operator<<(ostream &os, Account const &a) { 
    return os << "Account #: " << a.accountNo << "\tBalance: " << a.bal; 
} 

int main() { 
    Account a; 
    std::cin >> a; 

    std::cout << a; 
    return 0; 
}