-1

こんにちは、私は 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' の実行時

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 に答える