让我们有条件地设置cell
描述三角形单元格的类。
class cell
{
public:
cell() = default;
cell(size_t number, std::array<size_t, 3> faces, std::array<size_t, 3> neighbours);
private:
size_t _number;
std::array<size_t, 3> _faces;
std::array<size_t, 3> _neighbours;
};
如何设置类属性以使该类适用于任何形状的单元格?感觉应该是这样的:
template<typename SIZE>
class cell
{
public:
cell() = default;
cell(size_t number, std::array<size_t, SIZE> faces, std::array<size_t, SIZE> neighbours);
private:
size_t _number;
std::array<size_t, SIZE> _faces;
std::array<size_t, SIZE> _neighbours;
};
但它真正应该是什么样子?
几乎如此。事实证明,您希望根据应该形成哪些特定类来创建类描述,例如:
cell<3>
或cell<5>
. 那些。由于您的整个类型在逻辑上取决于顶点的数量,因此类模板非常适合这里。但!你的模板参数不应该是一个类型,而是一个数字(注意第一行):
否则,您的示例将无法编译,因为
cell
您将某种类型作为参数传递给模板类并构造std::array
。例如,当SIZE = float
你的数组类型是array<size_t, float>
- 这没有意义。