【发布时间】:2017-12-28 09:01:08
【问题描述】:
在一个项目中,在一个文件中,已经定义了“CalibHessian”:
struct CalibHessian
{
EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
static int instanceCounter;
VecC value_zero;
VecC value_scaled;
VecCf value_scaledf;
VecCf value_scaledi;
VecC value;
VecC step;
VecC step_backup;
VecC value_backup;
VecC value_minus_value_zero;
inline ~CalibHessian() {instanceCounter--;}
inline CalibHessian()
{
VecC initial_value = VecC::Zero();
initial_value[0] = fxG[0];
initial_value[1] = fyG[0];
initial_value[2] = cxG[0];
initial_value[3] = cyG[0];
setValueScaled(initial_value);
value_zero = value;
value_minus_value_zero.setZero();
instanceCounter++;
for(int i=0;i<256;i++)
Binv[i] = B[i] = i; // set gamma function to identity
};
// normal mode: use the optimized parameters everywhere!
inline float& fxl() {return value_scaledf[0];}
inline float& fyl() {return value_scaledf[1];}
inline float& cxl() {return value_scaledf[2];}
inline float& cyl() {return value_scaledf[3];}
inline float& fxli() {return value_scaledi[0];}
inline float& fyli() {return value_scaledi[1];}
inline float& cxli() {return value_scaledi[2];}
inline float& cyli() {return value_scaledi[3];}
};
但在另一个名为“CoarseInitializer.h”的文件中,它显示为:
namespace dso
{
struct CalibHessian;
struct FrameHessian;
...
}
它对“CalibHessian”类没有任何新意,只是重新宣布了它。而且它不包括相应的标题。但是在“CoarseInitializer.cpp”文件中,现在它包含了“CalibHessian.h”的标题。
我想知道是否有必要重新宣布?它是干什么用的?
【问题讨论】:
-
搜索并阅读前向声明。