1

コードをコンパイルしようとすると、奇妙なC4430およびC2143エラーが発生し続けます。私のクラスには、さまざまなクラスを指すデータメンバーがあり、エラーは「;」を予期していることを示しています。クラス名と「*」の間。これが私のクラスの要約です:

#include "CarStack.h"
#include "CarQueue.h"    
#include "CarDeque.h"
#include "base_class.h"

class my_class : public base_class
{
public:
    //Member Functions
private:
    //Other data members
    CarStack* car_stack;
    CarQueue* car_queue;
    CarDeque* car_deque;
};

エラーはそれらのクラスポインタで発生しています。なぜこのようなエラーが発生するのですか?私が見逃している重要なものはありますか?

4

1 に答える 1

0

基本クラスまたは車のクラスのいずれかがこのリストのいずれかを呼び出すと、循環依存関係が発生します。これには多くの解決策があります。

私が見つけた最善の解決策:最近のopenglプロジェクト「Include.h」からのコピーペーストには以下が含まれます:

#ifndef _INCLUDE_H
#define _INCLUDE_H

#include <Windows.h>
#include "SDL.h"
#include "gl/gl.h"
#incldue "gl/glu.h"

#include "Most Derived Classes"
#include "Most Derived Classes"

#endif

次に、#include "Include.h"プロジェクトのメイン ドライバー ファイルの開始時に使用します。次に、派生クラスの基本ヘッダーのみを含めます。

それは、IMOの前方宣言の束よりもはるかに優れたソリューションだと思います。

于 2013-06-26T04:16:47.250 に答える