こんにちは、私は QT の初心者で、ログ クラスを作成したいと考えています。以下のコードはログメッセージを 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: エラー: 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::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: エラー: 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: プロジェクト Phonebook のビルド ステップを実行しています... 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\ Desktop\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 [デバッグ\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 [デバッグ] エラー 2 16:22:05: プロセス "D:\QT\QtCreator\bin\ jom.exe」はコード 2 で終了しました。 プロジェクト電話帳のビルド中にエラーが発生しました (ターゲット: デスクトップ) ビルド ステップ 'Make' の実行時