在此示例中,基本模板类如何确定第二个混凝土类型
In this example, how does the base template class determine the second concrete type?
template<typename ConcreteOccGridMap>
class OccGridMapUtilConfig
: public OccGridMapUtil<ConcreteOccGridMap, GridMapCacheMethod>
{
public:
OccGridMapUtilConfig(ConcreteOccGridMap* gridMap = 0)
: OccGridMapUtil<ConcreteOccGridMap, GridMapCacheMethod>(gridMap)
{}
};
}
template<typename ConcreteOccGridMap, typename ConcreteCacheMethod>
class OccGridMapUtil
{
public:
OccGridMapUtil(const ConcreteOccGridMap* gridMap)
: concreteGridMap(gridMap)
, size(0)
{
mapObstacleThreshold = gridMap->getObstacleThreshold();
cacheMethod.setMapSize(gridMap->getMapDimensions());
}
~OccGridMapUtil()
{}
Eigen::Vector4f intensities;
ConcreteCacheMethod cacheMethod;
const ConcreteOccGridMap* concreteGridMap;
std::vector<Eigen::Vector3f> samplePoints;
int size;
float mapObstacleThreshold;
}
在上面的示例中,基类" occgridmaputil"具有2个类型的参数,但是其派生的类" ockgridmaputilconfig"只有1个类型的参数。在其构造函数中,它将" GridMap"传递给" occgridmaputil"的构造函数。但是,根据" occgridmaputil"的构造函数,如何确定" ConcreteCacheMethod"的特定类型?
基类不是模板,而是该模板的实例。
更具体地说,是实例OccGridMapUtil<ConcreteOccGridMap, GridMapCacheMethod>
子类是具有参数ConcreteOccGridMap
的模板,因此当亚类实例化时将被替换,但是其他类型不是模板的一部分,因此它必须在名称空间范围中作为有效的完整类型存在。
相关文章:
- 我有两个类需要在同一 cpp 文件中相互引用,但第一个类无法识别第二个类类型的对象
- 等待整个 omp 块完成,然后再调用第二个函数
- 我想在C++中读取一些多个字符,但它永远不会读取第二个字符
- 如何在创建自定义迭代器时获得 std::p air 的第一个和第二个?
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- 将第二个 GATT 服务添加到 Movesense 容器
- 如何在 c++ 中根据第二个元素按降序对列表进行排序
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- 比较 2 个向量并从第二个向量中删除在第一个 - c++ 中找不到的元素
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- 使第二个类的构造函数成为第一个类中的友元函数
- 为什么第二个代码给出了预期的结果,而第一个代码却没有?
- 为什么第一个代码块产生垃圾值,而第二个代码块将类成员的值相加?
- 打印无序映射的第二个元素,即集合
- 我有一个类,它创建了另一个类的实例.如何将变量通过第一个类传递到第二个类的实例化中?
- 需要使用模板查找数组的第二个最小和最小值
- c++:交换向量中所有元组的第一个和第二个元素
- 在此示例中,基本模板类如何确定第二个混凝土类型
- 我的类中的第二个参数是一个数组.我不确定如何在主程序中编写
- 打印由用户定义的数组,第一个数字确定单词的大小,第二个数字确定行的大小