在編寫下面的代碼,我得到一個錯誤:爲什麼運營商<<無法成功運作?
Expression.h
class Expression{
...
protected:
std::ostream Os;
};
Expression.c
Expression::Expression() : Os(std::cout)
{
...
}
Expression::Expression(std::ofstream &os) : Os(os)
{
...
}
Expression::Dump()
{
Os << "=============================================================" << std::endl;
Os << "Os: " << Os << std::endl;
}
error: no match for 'operator<<' (operand types are 'std::basic_ostream<char>' and 'std::ostream {aka std::basic_ostream<char>}')
什麼是我的錯?我應該怎麼做才能解決它?
雖然這樣的參數初始值Os(std::cout)
,這是什麼意思?
您可以嘗試創建一個[最小,***完整***和可驗證示例](http://stackoverflow.com/help/mcve)並向我們展示?另請[請閱讀如何提出好問題](http://stackoverflow.com/help/how-to-ask)。 –
你期望嘗試流出一個'ostream'來做什麼?尤其是將'ostream'流出來給自己? – BoBTFish
'operator <<'的確如[文檔](http://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt2)那樣工作。看起來你沒有閱讀文檔,也沒有關心錯誤信息。 –