char b;
operator<<(cout,(operator>>(cin,b)));
這不是在vC++編譯,因爲所有8個重載都不能轉換這種類型。運營商內部運營商不工作
任何一個可以解釋這種.....
是它們與返回類型的問題...........
char b;
operator<<(cout,(operator>>(cin,b)));
這不是在vC++編譯,因爲所有8個重載都不能轉換這種類型。運營商內部運營商不工作
任何一個可以解釋這種.....
是它們與返回類型的問題...........
流提取操作即op>>
返回的一個目的鍵入istream&
。 op<<
沒有以istream&
作爲第二個參數的超載。您需要拆分這兩個動作或定義一個這樣的重載。
char b;
operator<<(cout,(operator>>(cin,b),b));
與David Rodriguez的評論中的代碼相似,18分鐘前發佈。 – 2010-03-12 11:41:08
不錯的一個。 OP的代碼的另一種解釋是:'cout.operator <<(operator>>(cin,b))'。這將打印cin的地址,雖然(轉換爲'void *'的結果)。 – visitor 2010-03-12 11:52:29
的問題是,將工作輸出操作需要void*
,但是這是一個成員。如果您將其更改爲以下,這將是由operator>>
返回istream&
轉換爲void*
和輸出它(它是一個空指針,如果提取工作,和一個非NULL指針,否則):
cout.operator<<(operator>>(cin,b));
我不確定你爲什麼這麼做。你能否詳細說明一下?如果你想馬上輸出來自cin
的所有東西,請使用底層緩衝區
cout << cin.rdbuf();
請不要...但我只是覺得它:'char b; cout << ((cin >> b),b)' – 2010-03-12 11:18:33
請注意,使用'operator <<(cout,b)'不是慣用的。 'cout << b'在語義上是等價的,但是寫和讀更容易。 @大衛:哦,地獄! – 2010-03-12 12:03:06