質問: classの再定義エラーについて c++初心者で初歩的な質問ですがよろしくお願いします。 【内容】 class testを定義 class testを継承したclass test2を定義 class testを継承したclass test3を定義 class test2とclass test3で作成したインスタンスをメンバに持つclass test4を定義 【問題】 test2.hとtest3.hではclass testを継承するために#include "test.h"をしています。そして、test4.hではclass test2とclass test3を使うため#include "test2.h"、#include "test3.h"をしているのでredefinition of 'class test'というエラーが発生します。 このようなエラーを発生させずに上記の内容のものを実現させることは出来るのでしょうか? ちなみにosはturbolinux8でコンパイラはg++です。よろしくお願いします。
回答: test.hの先頭に次の2行を追加してください。 #ifndef __test_h__ #define __test_h__ また、最後に次の行を追加してください。 #endif __test_h__ もちろん、test2.hやtest3.hもインクルードが重なる可能性がある場合は__test2_h__や__test3_h__で最初と最後に行を追加してあげましょう。これらは標準ヘッダファイル(stdio.hなど)で使われているテクニックです。 基本的にはヘッダファイルは必ずこれらの行でくくるようにしてあげると良いでしょう。 test.h -------- #ifndef __test_h__ #define __test_h__ ヘッダファイルの内容~~~ #endif __test_h__ -------- ↑こんな風にすると良いです。