About std::ostream constructor
我想这样使用
1 2 3 4 5 6 | int main() { std::ostream os; os <<"something ..." << std::endl; return 0; } |
有一个错误说ostream构造函数受到保护:
error: ‘std::basic_ostream<_CharT, _Traits>::basic_ostream() [with _CharT = char; _Traits = std::char_traits]’ is protected.
但我记得
1 2 3 4 5 | // In a class. friend std::ostream & operator<<(std::ostream& out, const String & s) { out << s.m_s; return out; } |
关于为什么我的代码不起作用的任何建议?
error: 'std::basic_ostream<_CharT, _Traits>::basic_ostream() [with _CharT = char; _Traits = std::char_traits]' is protected
告诉你一样。
第二个示例是有效的,因为您可以使用对派生类的基类的引用。 在这种情况下,不调用构造函数,引用仅引用现有对象。 这是一个如何使用
1 2 3 4 5 6 | #include <iostream> int main() { std::ostream& os = std::cout; os <<"something ..." << std::endl; } |
在