【发布时间】:2017-09-12 04:11:10
【问题描述】:
我目前正在尝试探索 OpenCV。
当我查找 Mat 类时,我可以看到它是在 mat.hpp 中定义的,它位于包含文件夹中。但是,当我尝试搜索其对应的mat.cpp 时,发现类定义实际上位于matrix.cpp。我想文件名的差异不是问题,只要它包含mat.hpp。但是,标题 mat.hpp 也不包括在内。我知道编译器可能仍然能够编译,但据我所知,这是一种糟糕的编程习惯。
所以,我的问题是,不将头文件包含在源文件中是否是一种不好的做法?有什么理由不应该包含它?
我知道关于库的详细实现我不需要过多探讨,但这个问题只是出于好奇。
这是matrix.cpp 的#include 部分
#include "precomp.hpp"
#include "opencl_kernels_core.hpp"
#include "bufferpool.impl.hpp"
这是mat.hpp的#include部分
#include "opencv2/core/matx.hpp"
#include "opencv2/core/types.hpp"
#include "opencv2/core/bufferpool.hpp"
【问题讨论】:
-
一开始你说的是“
Matclass is defined inmat.hpp”。紧接着你说“我发现类 definition 实际上位于matrix.cpp”。这似乎是自相矛盾的。同样,definition 类在哪里? -
对不起,我在这里用错了词。 Mat 在 mat.hpp 中声明,未定义