你好我是QT的新手,我想要一个make 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";
}
当我尝试在main函数中调用该方法时,我有错误:
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:错误:C2015:太多了常量中的字符
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_message':函数不带1个参数
C:\用户\ ikac \桌面\工作空间\ QT \电话簿-集结桌面Qt_4_8_1_for_Desktop _- MSVC2010 _Qt_SDK__Debug .. \电话簿\ log.cpp:5: 错误:C2511:'void Log :: log_message(QString)':重载成员 “日志”中找不到功能
c:\ users \ ikac \ desktop \ workspace \ qt \ phonebook \ log.h:8:查看声明 'Log'
C:\用户\ ikac \桌面\工作空间\ QT \电话簿-集结桌面Qt_4_8_1_for_Desktop _- MSVC2010 _Qt_SDK__Debug .. \电话簿\ log.cpp:10: 错误:C2017:非法转义序列
C:\用户\ ikac \桌面\工作空间\ QT \电话簿-集结桌面Qt_4_8_1_for_Desktop _- MSVC2010 _Qt_SDK__Debug .. \电话簿\ 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:'无效 Log :: log_message(QString)':找不到重载的成员函数 “日志” 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”debug “ -一世”。” -I“.. \ Phonebook”-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:\ Users \ ikac \ Desktop \ workspace \ QT \ Phonebook-build-desktop-Qt_4_8_1_for_Desktop _- 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:进程“D:\ QT \ QtCreator \ BIN \ jom.exe” 退出代码2.构建项目电话簿时出错(目标: 桌面)执行构建步骤'Make'时
答案 0 :(得分:1)
使用logs.log_message("Database initialized");
。单引号用于c ++中的字符,而不是字符串。
答案 1 :(得分:0)
您需要在引号内传递字符串,即“”
使用它:
logs.log_message("Database initialized");