【发布时间】:2020-04-24 11:56:06
【问题描述】:
我想实现一个使用 N 维向量的类(从数学的角度来看)。我正在使用 opencv 库中的 Vec 对象,它们的签名如下所示:Vec<typename _Tp, int cn> 其中cn 是该向量内的元素数。我必须为cn 参数提供一个常量。
我希望我的班级看起来像这样:
class MyClass
{
private:
Vec<float, dim> m_center;
vector<Vec<float, dim>> m_points;
// ...
}
我希望能够动态初始化dim,即创建一个MyClass 对象,将其dim 设置为我想要的任何数字。如何在 C++ 中正确解决这个问题?
【问题讨论】:
-
template <std::size_t dim> class MyClass? -
你想使用构造函数并传递参数吗?
-
如果
dim不知道编译类型但必须是Vec,那么你必须找到Vec的替代品(如std::vector)。 -
如果你有小的可能值,你可能(运行时)调度到所有可能的值。 (
if (i == 1) f<1>(); else if (i == 2) f<2>();...)
标签: c++ class generics initialization