我正在尝试使用 QFile 和 QTextStream 创建一个 Logger 类,但我找不到有效的方法。我只想在其中创建一个 log(...) 函数。
如果我执行以下操作,我知道它会起作用:
void CLogger::log(QString strLog,int nType) {
QFile file(m_strFileName);
file.open( QIODevice::Append | QIODevice::Text );
QTextStream logStream(&file);
logStream << nType << "-" << strLog;
file.close();
}
但这很讨厌。我不想在我插入的每个日志行中创建一个 QFile 对象。
因此,我尝试了几种不同的方法,例如:
1) (以 QFile *m_pFile 作为成员)
CLogger::CLogger()
{
m_pFile = new QFile(m_strFileName);
}
void CLogger::log(QString strLog,int nType)
{
m_pFile->open( QIODevice::Append | QIODevice::Text );
QTextStream logStream(m_pFile);
logStream << nType << "-" << strLog;
m_pFile.close();
}
或者
2) (以 QFile *m_pFile 和 QTextStream *m_pLogStream 作为成员)
CLogger::CLogger()
{
m_pFile = new QFile(m_strFileName);
m_pFile->open( QIODevice::Append | QIODevice::Text );
m_pLogStream = new QTextStream(m_pFile);
}
void CLogger::log(QString strLog,int nType)
{
*m_pLogStream << nType << "-" << strLog;
}
在第一种情况下,我得到:
C2248:“QTextStream::QTextStream”:无法访问在“QTextStream”类中声明的私有成员
第二,*m_pLogStream 不等同于 QTextStream&。
我究竟做错了什么?