#include <sstream>
using namespace std;
int main()
{
cout << "hi"; // error: undeclared cout
}
從我讀過的,sstream類是從iostream類派生的,但爲什麼它不會自動包含?爲什麼iostream頭文件沒有被包含?
#include <sstream>
using namespace std;
int main()
{
cout << "hi"; // error: undeclared cout
}
從我讀過的,sstream類是從iostream類派生的,但爲什麼它不會自動包含?爲什麼iostream頭文件沒有被包含?
基於iostream
的類與iostream
標題不同。標準標題不必包含對方,也可以按任意順序包含對方。如果您想使用<iostream>
的內容,則必須使用#include <iostream>
。
對不起,我不明白基於iostream的類是什麼意思。 – user756327 2011-05-16 00:01:02
@ user756327:基於'std :: ostream'等的類。 – Puppy 2011-05-16 00:32:56
std::sstream
源自std::istream
和std::ostream
。這意味着您不需要包含<istream>
或<ostream>
。但是,std::cout
在這兩個標題中都沒有定義。這就是爲什麼你需要另一個標題,<iostream>
。
你看過sstream頭文件,看看有什麼是不包括的? – 2011-05-15 22:02:07
雖然它不是從標準輸出派生的。 std :: cout也是從iostream派生的,但它不僅僅是這一點。 – 2011-05-15 22:02:16
但是,當我派生類,我不必包括基類頭。我不知道爲什麼它不包括在內。 – user756327 2011-05-15 22:18:16