2016-12-31 42 views
1

在一箇舊的項目代碼的安慰是如下語句:印刷使用的ostream和運營商<<

cout.operator<<("Hi...");  
ostream.operator<<("Hi...."); 

它認爲它可以寫成followa,導致相同的輸出:

cout << "Hi.."; 

我試圖把這些語句放在main()中。但是,編譯器會發出錯誤:

In function 'int main()': 
11:3: error: 'ostream' was not declared in this scope 
11:3: note: suggested alternative: 
In file included from /usr/include/c++/4.9/ios:38:0, 
       from /usr/include/c++/4.9/ostream:38, 
       from /usr/include/c++/4.9/iostream:39, 
       from 2: 
/usr/include/c++/4.9/iosfwd:136:33: note: 'std::ostream' 
    typedef basic_ostream<char> ostream; 

,我不服氣的另一件事是本聲明的ostream可以直接調用操作< <。直接在cout可以呼叫運營商< <

如果有些機構可以詳細說明或解釋如何,那麼我將能夠調試代碼。
謝謝。

+0

你可以[編輯]你的帖子來顯示主要功能&包括? –

+0

錯誤消息是沒有名爲'ostream'的變量。將第二行更改爲'cout.operator <<(「Hi ....」);'或'static_cast (cout).operator <<(「Hi ....」);'。 –

回答

0

有問題的代碼線實際上可以BER編譯並執行工作,例如:

#include <iostream> 

using namespace std; 

int main (void) 
{ 
    cout << "Hi"; // code line in question 

    cout << endl; 

    return 0; 
} 

上述的誤差是通過使用ostream,這是cout的類型,在一個地方引起其中的對象(未一個類型)是必需的。
正如在評論中提到的,該錯誤的修復是使用該類型的對象。這基本上意味着引用代碼的第一行,即上面解決方案代碼中的行。