C++初学者です。
C++ではライブラリをインクルードする際、ライブラリが前提とするライブラリもインクルードしなければなりません。例えば以下のようなファイルa.hとb.hがあったとき、main.cppでb.hを先にインクルードした場合はエラーとなりませんが、a.hを先にインクルードするとエラーとなります。
C++
1// a.h 2void foo(){ 3 bar(); 4} 5 6// b.h 7void bar(){ 8}
a.hでb.hをインクルードするようにすれば、main.cpp内のインクルード順によらずエラーは出ません。
C++
1// a.h 2#include "b.h" 3void foo(){ 4 bar(); 5}
C++には前提となるライブラリをインクルードしていなかったり、インクルード順を間違えたりするとエラーとなるライブラリがあると思います。
なぜそれらのライブラリはそれが必要としているライブラリを自分でインクルードしていないのでしょうか?
また、このような前提ライブラリが無いことやインクルード順の間違いなどが原因のエラーに対する機械的な対処方法はありますでしょうか?
一般にそんな定義丸出しな a.h をライブラリが公開してくるとも思えないので,イマイチ伝わらない感です.
もうちょっと実物を模倣したような例を出せないのでしょうか?
