【发布时间】:2013-11-06 09:25:18
【问题描述】:
我正在尝试使用 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&。
我做错了什么?
【问题讨论】: