模板函数1
// void RenewalByStartEndPoint(double &min_x, double &max_x, const Eigen::Vector2d &start_point, const Eigen::Vector2d &end_point, const Eigen::Matrix2d& ratation_mat)
// {
// Eigen::Vector2d new_s_point, new_e_point;
// Enu2VcsRatationPoint(start_point, ratation_mat, new_s_point);
// Enu2VcsRatationPoint(end_point, ratation_mat, new_e_point);
// double min = std::min(new_s_point.x(), new_e_point.x());
// double max = std::max(new_s_point.x(), new_e_point.x());
// if (min > min_x)
// {
// min_x = min;
// }
// if (max < max_x)
// {
// max_x = max;
// }
// }
// void RenewalByStartEndPoint(double &min_x, double &max_x, const Eigen::Vector3d &start_point, const Eigen::Vector3d &end_point, const Eigen::Matrix3d& ratation_mat)
// {
// Eigen::Vector3d new_s_point, new_e_point;
// Enu2VcsRatationPoint(start_point, ratation_mat, new_s_point);
// Enu2VcsRatationPoint(end_point, ratation_mat, new_e_point);
// double min = std::min(new_s_point.x(), new_e_point.x());
// double max = std::max(new_s_point.x(), new_e_point.x());
// if (min > min_x)
// {
// min_x = min;
// }
// if (max < max_x)
// {
// max_x = max;
// }
// }
template <typename T, typename MatType>
void RenewalByStartEndPoint(double &min_x, double &max_x, const T &start_point, const T &end_point, const MatType &ratation_mat)
{
T new_s_point, new_e_point;
Enu2VcsRatationPoint(start_point, ratation_mat, new_s_point);
Enu2VcsRatationPoint(end_point, ratation_mat, new_e_point);
double min = std::min(new_s_point.x(), new_e_point.x());
double max = std::max(new_s_point.x(), new_e_point.x());
if (min > min_x)
{
min_x = min;
}
if (max < max_x)
{
max_x = max;
}
}
模板函数在继承时 需要注意的问题
非模板类,继承时,protected可以被子类直接访问到
但是变成模板之后,这样就访问不到了
如上所示 父类里的 protected成员 ,子类访问不到,但是改成this->就可以了