私は C++ でプロジェクトに取り組んでいますが、何が問題なのかわかりません。私は 4 つのクラスを作成しましたが、作業中 (Visual Studio 2010 の下) はすべて正常に見えました。VSはすべての定義を「見た」ので、自動入力と提案を使用できましたが、プロジェクトをコンパイルしようとすると、突然盲目になりました。ヘッダーなどを含めなかったようです(私はそうしました)。奇妙なことに、VS でこれらのクラスを操作しても問題はありません (ヒント、属性とメソッドのリスト、およびそのすべてについて ctrl+space を使用できます) が、コンパイルしようとすると、「ClassName」は型ではありません。以下の問題の簡単なサンプル:
ProButton.cpp:
#include "ProButton.h"
using namespace pGUI;
ProButton::ProButton( ... )
: ProControl( ... )
{
...
}
ProButton.h:
#ifndef __PRO_BUTTON__
#define __PRO_BUTTON__
#include <string>
#include "ProControl.h"
namespace pGUI
{
class ProButton :
public pGUI::ProControl
{
public:
//attributes
...
public:
//methods
...
};
}
#endif
ただし、コンパイラは次のように述べています: エラー 291 エラー C2653: 'ProButton' : ProButton.cpp のこの行のクラスまたは名前空間ではありません: ProButton::ProButton( ... )
エラー 23 エラー C2039: 'ProControl' : 'pGUI' のメンバーではありません
エラー 24 エラー C2504: 'ProControl' : 基本クラスが未定義です
プロジェクト全体の同様のエラー。何が悪いのかわかりません。私のVSが壊れたように見えます:D
もちろん、それら (...) はそこにコードがあることを意味しますが、今のところそれほど重要ではありません。すべてのソリューションをどこかにアップロードできます。
編集//
名前空間について、すべてのヘッダー ファイル (クラス宣言) は名前空間で次のように定義されます。
namespace pGUI{
class ProClass
{
};
}
これらのクラス (ProClass.cpp 内) のすべての定義は、以下を使用しています。
using namespace pGUI;
最初に。
問題は、ファイルを含める順序にあると思います。これがどのように行われることになっているのかわかりません。これまでのところ、次の4つのクラスがあります。
クラス ProGUI:
- ProContainerへのポインタがあります
- 内容: ProContainer および ProControl
クラス ProContainer:
- 次へのポインタがあります: ProGUI および ProControl
クラス ProControl:
- ProContainerへのポインタがあります
- ProButtonを含む
- ProButton の基本クラスです
クラス ProButton:
- ProControl のサブクラスです。
これらのクラスもirrlichtライブラリを使用していますが、どこに含めるかわかりません。直前にメインファイルに含めました#include "ProGUI.h"
。これは、main に含まれる唯一のものでもあります。ProGUI.h .
//編集 2 -> 解決済み
インクルードの問題でした。包含順序を再考し、前方宣言を追加する必要がありました。とにかく、それはすべて奇妙に思え、私を理解するのに多くの時間がかかりました. 助けてくれてありがとう。:)