以下に、コンパイル時にエラーが発生するコードの一部の簡略版を再現しました。
tests.cpp
#include <iostream>
#include "../Beta.h"
#include "../Alpha.h"
using namespace std;
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
Alpha.h
#include <vector>
class Alpha
{
public:
typedef struct _info{
int k;
} info;
friend class Beta;
};
Beta.h
#include <vector>
class Alpha;
class Beta
{
public:
std::vector <Alpha::info*> vecInfo;
};
実行するg++ testing.cpp
と、以下のエラーメッセージが表示されます
tests.cpp:10:0から含まれているファイル:../ Beta.h:8:15:エラー:
ネストされた名前指定子で使用される不完全なタイプ「アルファ」../Beta.h:8:15:
エラー:ネストされた名前指定子で使用される不完全なタイプ「アルファ」
../Beta.h:8:27:エラー:テンプレート引数1が無効です../Beta.h:8:27:
エラー:テンプレート引数2が無効です
フォーラムのスレッドから、最初のエラーはある種の循環依存が原因であることがわかります(エラー:ネストされた名前指定子で使用される不完全な型)。私のコードと彼らのコードの類似性を見ることができません。私は何を間違っているのですか。