【发布时间】:2020-12-24 15:05:44
【问题描述】:
我正在尝试使用以下功能:
void f(std::istream& input, std::ostream& output) {
int n;
output << "enter a number: ";
input >> n;
}
int main() {
std::istream is;
std::ostream os;
f(is, os);
return 0;
}
错误:
'std::basic_istream<_CharT, _Traits>::basic_istream()
完全错误这是我在调试和编译时遇到的整个错误,
c:\Users\root\Documents\cpp\main.cpp: In function 'int main()':
c:\Users\root\Documents\cpp\main.cpp:40:18: error: 'std::basic_istream<_CharT, _Traits>::basic_istream()
[with _CharT = char; _Traits = std::char_traits<char>]' is protected within this context
40 | std::istream in;
| ^~
In file included from c:\mingw\lib\gcc\mingw32\9.2.0\include\c++\iostream:40,
from c:\Users\root\Documents\cpp\main.cpp:7:
c:\mingw\lib\gcc\mingw32\9.2.0\include\c++\istream:606:7: note: declared protected here
606 | basic_istream()
| ^~~~~~~~~~~~~
c:\Users\root\Documents\cpp\main.cpp:41:18: error: 'std::basic_ostream<_CharT, _Traits>::basic_ostream()
[with _CharT = char; _Traits = std::char_traits<char>]' is protected within this context
41 | std::ostream out;
| ^~~
In file included from c:\mingw\lib\gcc\mingw32\9.2.0\include\c++\iostream:39,
from c:\Users\root\Documents\cpp\main.cpp:7:
c:\mingw\lib\gcc\mingw32\9.2.0\include\c++\ostream:390:7: note: declared protected here
390 | basic_ostream()
| ^~~~~~~~~~~~~
f(std::cin, std::cout) 导致以下错误:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_M_construct null not valid
【问题讨论】:
-
这不是错误消息。请包含完整的消息
-
函数
f看起来不错。但是在main中,您不能默认构造这样的流。你到底想做什么? -
@cigien,我正在尝试使用我编写的函数。 !
-
好吧,打电话给
f(std::cout, std::cin);怎么样? -
@cigien,我最初考虑过这一点,但不太确定它会如何工作。从我的脑海中说出来。
标签: c++