我有一个模板类
template <class dataType>
class SSDFinder
{
dataType a;
dataType b;
public:
void FindSSD();
};
实施是:
template<class dataType>
void SSDFinder<dataType>::FindSSD()
{
// some code.
}
现在我需要根据 dataType 是否有 2 个元素(例如 x、y)或 3 个元素(例如 x、y、z)来专门化这个函数 FindSSD。
有多种方法可以让我拥有 2 或 3 个元素。当我开始专注于 3 个元素时,我可以拥有 cv::Point2i、cv::Point2d。cv::Point2f、cv::Vec 等等。
对于 3 元素类似。
有没有一种方法可以将所有特定的元素组合在一起,使得所有具有 2 个元素的数据类型只能具有 1 个专业化,而具有 3 个元素的数据类型可以具有另一个专业化,仅此而已?
这些数据类型中没有 size() 等函数,我可以找到除了尝试访问它们之外还有多少元素。例如。我不能做 dataType.type() 来获取类型信息。许多数据结构没有提供这一点。