重複の可能性:
前方宣言 FILE *
FILE などのポインターによってアクセスされる C 構造体のラッパー クラスを作成するとします。
Cであなたは言わなければならない
typedef struct _iobuf
{
/*content of this struct*/
} FILE;
オブジェクト宣言で構造体を取り除く。ここで、filec.h で次のことを行います。
class FILE;
class FileC
{
public:
FileC(const char* name,const char* mode);
~FileC();
private:
FILE* fptr;
};
そしてfilec.cppで:
#include "filec.h"
#include <cstdio>
//Implementation of FileC member functions
しかし、コンパイルすると、不完全なタイプの構造体 FILE について苦情が寄せられます。インクルード順序を切り替えると、FILE が既に宣言されていることがわかります。実装固有の詳細を使用するか、FILE* を前後にキャストする代わりに void* を使用することで解決できます。しかし、どうすればうまくいくでしょうか?とにかくstdioも含まれているため、iostreamの使用は答えではありません。