さて、Visual Studios C++ (C++/CLI) の前方宣言で問題が発生しています。コードは次のとおりです。
ああ
#include "B.h"
#ifdef B_H
#pragma once
public ref class A : public base_class //base_class is public, memory managed
{
B^ b;
}
#endif
Bh
#define B_H
#pragma once
ref class A;
ref class B
{
A^ a;
}
#include "A.h"
#ifdef/#pragma ガードは、*.h が 2 回読み取られるのを防ぎ、bh が最初に読み取られるようにする必要があります。コンパイラの出力から、そうであると確信しています。(#pragma once と #include 配置で #ifdef/#define が必要かどうかさえわかりません)
しかし、コンパイラはpath/ah: error C2011: 'class' type redefinition を訴えます。ファイル パス/Bh を参照
A は実際のクラス定義の派生クラスであるため、前方宣言で何かを行う必要がありますか、それとも間違ったツリーを吠えていますか?