現在OpenCVについて調べています。ライブラリのソースファイルにヘッダが含まれていないのはなぜですか?
Matクラスを検索すると、インクルードフォルダにあるmat.hpp
で定義されていることがわかります。しかし、対応するmat.cpp
を検索しようとすると、クラス定義が実際にmatrix.cpp
にあることがわかりました。私は、ファイル名の違いは、それが含まれている限り、問題ではないと仮定mat.hpp
。ただし、ヘッダmat.hpp
も含まれていませんでした。私はコンパイラがおそらくまだコンパイルできることを知っていますが、私が知る限り、これはプログラミングの面で悪いことです。
私の質問は、ヘッダーファイルをソースファイルに含めないことは悪い習慣だということですか?それが含まれてはならない理由はありますか?
私は、ライブラリの詳細な実装についてはあまり詳しく調べる必要はないことを理解していますが、この質問は好奇心からは逸れています。ここで
はmatrix.cpp
#include "precomp.hpp"
#include "opencl_kernels_core.hpp"
#include "bufferpool.impl.hpp"
の#include
一部であり、ここでの短い答えはmat.hpp
#include "opencv2/core/matx.hpp"
#include "opencv2/core/types.hpp"
#include "opencv2/core/bufferpool.hpp"
最初は "mat"クラスは 'mat.hpp'で定義されていると言っています。"その直後、「クラス*の定義が実際には 'matrix.cpp'にあることが分かりました。これは自己矛盾しているようです。ここでも、クラス定義*はどこにありますか? – AnT
申し訳ありませんが、私はここで間違った言葉を使いました。 Matはと宣言されています mat.hppで定義されていません –