-1

クラスが大きくなりすぎて分割する必要があります。ただし、理想的には分割されるクラスは、メイン クラスの変数にアクセスする必要があります。メイン クラスへの参照を持つテンプレート クラスを作成しようとしていますが、インクルード再帰の問題があるようです。検索したところ、前方宣言を使用できると言われていますが、まだ不完全な型のエラーが発生します。これはよくある質問であることは知っていますが、スレッドHeaders Inclusive Each Other in C++ を見てきましたが、どの回答も意味をなさないか機能していないようです。

どんな助けでも大歓迎です。

classmain.h

class classref;
class classmain
{
public:
    classmain()
:B(*this)
{};

 classref B;
 int a;
};

classref.h

#include "classmain.h"

class classref
{
public:
classref(classmain& ref)
    :A(ref)
{};

 classmain& A;
};
4

1 に答える 1

2

これは、クラスclassmain::Bのインスタンスであると宣言しているためです。次に、 の完全な定義がclassref必要です。classref

代わりに実際にファイルで宣言classmainし、に含めることをお勧めします。したがって、宣言と包含に関して、現在行っていることとは逆です。classref.hclassref.hclassmain.h

于 2013-04-07T09:06:20.663 に答える