0

我注意到 qDebug() QTextStrean 和一般标准输入,标准输出想问,它实际上是如何工作的,看这个:

这行得通!

使用 QTextStream 的方法showmenu()

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() 也使用标准输出......我正确吗?

它抛出这个错误:

1>D:..\App_console.cpp(20,15): error : no match for call to '(QTextStream) (_IO_FILE*&)'

我已经包含了 cstdio

会是什么呢?

4

1 回答 1

2

在 C++11 之前,您需要在Constructor Initialization List中执行此操作。在类的构造函数定义中,例如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};
};
于 2016-10-18T11:25:51.943 回答