3

VisualStudio2010を使用してQt4.8.3で単純なプログラムを構築していますが、単純なメソッド定義で問題が発生しています。

これが私のコードです:

GuiHelper.h

#ifndef GUIHELPER_H 
#define GUIHELPER_H

#include "GuiHelper.cpp"
#include <QString>
#include <QWidget>
#include <QFile>

class GuiHelper
{
private:
static void useStyleSheet(QString, QWidget*);  
};
#endif //GUIHELPER_H

およびGuiHelper.cpp:

#include <QString>
#include <QWidget>
#include <QFile>
#include "GuiHelper.h"

void GuiHelper::useStyleSheet(QString filename, QWidget* widget)
{
// loads style file and apply style
QFile file(":/Resources/"+filename);
file.open(QFile::ReadOnly);
QString styleSheet = QLatin1String(file.readAll());
widget->setStyleSheet(styleSheet);
}

エラーC2653が発生します:GuiHelperはクラスでも名前空間でもありませんが、何が問題なのか実際にはわかりません...

QTアドインを使用してプロジェクトを作成するときに、「プリコンパイル済みヘッダーなし」もチェックしました

ありがとう!

4

1 に答える 1

4

クイックフィックス-を削除します

#include "GuiHelper.cpp"

ヘッダーから。

問題の原因:コンパイラはソース、つまり.cppファイルをコンパイルします。cppファイルの解析を開始し、

#include "GuiHelper.h"

これは、ヘッダーを処理してその内容を貼り付けるように指示します-ヘッダーの2行目は

#define GUIHELPER_H

その後、あなたは

#include "GuiHelper.cpp"

次に、ファイルの処理と貼り付けを試みcpp、ヘッダーの処理を再度試みます。すでに定義されているためGUIHELPER_H、ヘッダーは処理されなくなりますが、クラスはまだ定義されていないことに注意してください。だからそれはラインに到達します

void GuiHelper::useStyleSheet(QString filename, QWidget* widget)

GuiHelperただし、まだ定義されていないため、エラーが発生します。

于 2012-11-28T18:46:39.780 に答える