我注意到qDebug((QTextStrean和一般的stdin、stdout有一些问题,想问一下它实际上是如何工作的,看看这个:
这很管用
方法showmenu((使用QTextStream
showMenu(){
QTextStream m_out(stdout);
QTextStream m_in(stdin);
m_out() << "Hey";
}
这行不通
.h
//declaration
public:
QTextStream m_out;
QTextStream m_in;
.cpp
//method showMenu()
showMenu(){
m_out(stdout);
m_in(stdin);
m_out() << "Hey";
}
我注意到,它有重载问题,因为qDebug((也使用stdout。。。我说得对吗?
它抛出这个错误:
1> D:。。\App_console.cpp(20,15(:错误:不匹配调用"(QTextStream((_IO_FILE*&(">
我已包含cstio
可能是什么?
Pre-C++11,您需要在构造函数初始化列表中执行此操作。在类的构造函数定义中,比如MyStreamer
,可以这样初始化它:
class MyStreamer{
....
public:
QTextStream m_out;
QTextStream m_in;
};
在.cpp文件中:
MyStreamer::MyStreamer(...) : m_out(stdout), m_in(stdin) {
....
}
在C++11及更高版本中,您可以简单地使用统一初始化:
class MyStreamer{
....
public:
QTextStream m_out{stdout};
QTextStream m_in{stdin};
};