-1

您好,我是 QT 的新手,我想制作一个 Log 类。我制作了Log.cpp,下面的代码将日志消息保存在Log.txt文件中,但问题出在函数参数QString msg中。我希望用户通过调用键入需要保存的消息logs.log_message("My log message").

#include "log.h"


void Log::log_message(QString msg)
{
    QFile file("Log.txt");
    if(!file.open(QIODevice::Append | QIODevice::WriteOnly | QIODevice::Text))
        return;
    QTextStream out(&file);
    out << msg \n";
}

当我尝试在主函数中调用该方法时出现错误:

Log logs;
logs.log_message('Database initialized');

问题 :

C:\Users\ikac\Desktop\workspace\QT\Phonebook-build-desktop-Qt_4_8_1_for_Desktop_- MSVC2010 _Qt_SDK__Debug..\Phonebook\main.cpp:15: error: C2015: too many characters in constant

C:\Users\ikac\Desktop\workspace\QT\Phonebook-build-desktop-Qt_4_8_1_for_Desktop_- MSVC2010 _Qt_SDK__Debug..\Phonebook\main.cpp:15:错误:C2660:'Log::log_message':函数不占用 1论据

C:\Users\ikac\Desktop\workspace\QT\Phonebook-build-desktop-Qt_4_8_1_for_Desktop_- MSVC2010 _Qt_SDK__Debug..\Phonebook\log.cpp:5: error: C2511: 'void Log::log_message(QString)' : 重载在“日志”中找不到成员函数

c:\users\ikac\desktop\workspace\qt\phonebook\log.h:8:见“日志”的声明

C:\Users\ikac\Desktop\workspace\QT\Phonebook-build-desktop-Qt_4_8_1_for_Desktop_- MSVC2010 _Qt_SDK__Debug..\Phonebook\log.cpp:10:错误:C2017:非法转义序列

C:\Users\ikac\Desktop\workspace\QT\Phonebook-build-desktop-Qt_4_8_1_for_Desktop_- MSVC2010 _Qt_SDK__Debug..\Phonebook\log.cpp:10:错误:C2001:常量换行

编译器输出:

16:22:00:为项目电话簿运行构建步骤... 16:22:00:配置未更改,跳过 qmake 步骤。16:22:00:开始:“D:\QT\QtCreator\bin\jom.exe”main.cpp ..\Phonebook\main.cpp(15):错误 C2015:常量中的字符过多 ..\Phonebook\ main.cpp(15) : 错误 C2660: 'Log::log_message' : 函数不接受 1 个参数 log.cpp ..\Phonebook\log.cpp(5) : 错误 C2511: 'void Log::log_message(QString) ' : 在 'Log' c:\users\ikac\desktop\workspace\qt\phonebook\log.h(8) 中找不到重载的成员函数:参见 'Log' 的声明 ..\Phonebook\log.cpp(10) : 错误 C2017: 非法转义序列 ..\Phonebook\log.cpp(10) : 错误 C2001: 常量生成代码中的换行符... cl -c -nologo -Zm200 -Zc: wchar_t- -zi -MDd -GR -EHsc -W3 -w34100 -w34189 -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -I“d:\ QT \桌面\Qt\4.8.1\msvc2010\include\QtCore" -I"d:\QT\Desktop\Qt\4.8.1\msvc2010\include\QtGui" -I"d:\QT\Desktop\Qt\4.8. 1\msvc2010\include\QtSql" -I"d:\QT\Desktop\Qt\4.8.1\msvc2010\include" -I"d:\QT\Desktop\Qt\4.8.1\msvc2010\include\ActiveQt" -I“调试”-I“。” -I"..\电话簿"-I"." -I"d:\QT\Desktop\Qt\4.8.1\msvc2010\mkspecs\win32-msvc2010" -Fodebug\@C:\Users\ikac\AppData\Local\Temp\main.obj.5108.31.jom D: \QT\QtCreator\bin\jom.exe -f Makefile.Debug jom: C:MSVC2010 _Qt_SDK__Debug\Makefile.Debug [debug\main.obj] 错误 2

jom 1.0.8 - 增强你的核心

jom: C:\Users\ikac\Desktop\workspace\QT\Phonebook-build-desktop-Qt_4_8_1_for_Desktop_- MSVC2010 _Qt_SDK__Debug\Makefile [debug] 错误 2 16:22:05: The process "D:\QT\QtCreator\bin\ jom.exe”退出并显示代码 2。构建项目电话簿时出错(目标:桌面)执行构建步骤“Make”时

4

2 回答 2

1

使用logs.log_message("Database initialized");. 单引号用于 c++ 中的字符,而不是字符串。

于 2013-01-28T15:41:03.457 回答
0

您需要在引号内传递您的字符串,即“”

用这个:

logs.log_message("Database initialized");

于 2013-01-28T15:46:21.720 回答