2011-05-15 76 views
3
#include <sstream> 
using namespace std; 

int main() 
{ 
    cout << "hi"; // error: undeclared cout 
} 

從我讀過的,sstream類是從iostream類派生的,但爲什麼它不會自動包含?爲什麼iostream頭文件沒有被包含?

+2

你看過sstream頭文件,看看有什麼是不包括的? – 2011-05-15 22:02:07

+0

雖然它不是從標準輸出派生的。 std :: cout也是從iostream派生的,但它不僅僅是這一點。 – 2011-05-15 22:02:16

+0

但是,當我派生類,我不必包括基類頭。我不知道爲什麼它不包括在內。 – user756327 2011-05-15 22:18:16

回答

11

基於iostream的類與iostream標題不同。標準標題不必包含對方,也可以按任意順序包含對方。如果您想使用<iostream>的內容,則必須使用#include <iostream>

+0

對不起,我不明白基於iostream的類是什麼意思。 – user756327 2011-05-16 00:01:02

+0

@ user756327:基於'std :: ostream'等的類。 – Puppy 2011-05-16 00:32:56

1

std::sstream源自std::istreamstd::ostream。這意味着您不需要包含<istream><ostream>。但是,std::cout在這兩個標題中都沒有定義。這就是爲什麼你需要另一個標題,<iostream>

相關問題