char b;
operator<<(cout,(operator>>(cin,b)));
cela ne compile en vC++ parce que les 8 dévers convertir ce surcharge de type.intérieur opérateur ne fonctionne pas
peut-on expliquer .....
est leur problème avec un type de retour ...........
char b;
operator<<(cout,(operator>>(cin,b)));
cela ne compile en vC++ parce que les 8 dévers convertir ce surcharge de type.intérieur opérateur ne fonctionne pas
peut-on expliquer .....
est leur problème avec un type de retour ...........
L'opération d'extraction de flux c.-à-op>>
retourne un objet tapez istream&
. Le op<<
n'a pas de surcharge qui prend istream&
comme deuxième paramètre. Vous devez diviser les deux actions ou définir une telle surcharge.
char b;
operator<<(cout,(operator>>(cin,b),b));
Spookily presque identique au code dans le commentaire de David Rodriguez, posté 18 minutes plus tôt. –
Nice. Une autre interprétation du code d'OP: 'cout.operator <<(operator>> (cin, b))'. Cela afficherait l'adresse de cin, cependant (résultat de la conversion en 'void *'). – visitor
Le problème est que l'opérateur de sortie qui fonctionnerait prend void*
, mais qui est membre. Si vous changez à ce qui suit, il convertira le istream&
retourné par la operator>>
à void*
et la sortie (et il est un pointeur NULL si l'extraction a travaillé, et un pointeur non NULL non):
cout.operator<<(operator>>(cin,b));
Je ne suis pas sûr de savoir pourquoi vous faites cela. Pouvez-vous élaborer s'il vous plaît? Si vous voulez sortir tous les trucs de cin
tout de suite, utilisez le tampon sous-jacente
cout << cin.rdbuf();
S'il vous plaît ne pas ... mais je me sens comme il: 'char b; cout << ((cin >> b), b) ' –
Notez que l'utilisation de' operator << (cout, b) 'n'est pas idiomatique. 'cout << b' est sémantiquement équivalent mais beaucoup plus facile à écrire et à lire. @ David: Oh mon dieu! –