我想知道网格类如何专门化?例如,如果我们有一个由Polygon类中的Polygon组成的Mesh类。我们如何根据应用来专门化网格以支持标量字段,矢量字段等。也许对于高度复杂的仿真,我们需要3个标量场和4个矢量场。相反,对于简单的仿真,我们只需要一个标量场,仅此而已。
因此,通过专业化,我的意思是向多边形添加属性以存储局部数量。
这是一个悬而未决的问题,我不知道该怎么做。这样可能是不可能的。但是c ++是灵活的,每一个允许在实践中做些接近的解决方案都会有所帮助。
最佳答案
您可以使用模板(假设多边形是顶点的集合,而网格是多边形的集合)。这只是简单的示例:
#include <array>
#include <vector>
template <typename T>
struct Vector {
T x, y, z;
};
template <typename T, size_t N>
struct Polygon {
std::array<T, N> vertices;
};
template <typename T>
struct Mesh {
std::vector<T> polygons;
};
int main() {
// mesh with polygons of float-vertices with 3 dimensions
Mesh<Polygon<Vector<float>, 3>> mesh;
mesh.polygons.push_back(
{{{{1.f, 2.f, 3.f}, {1.f, 2.f, 3.f}, {1.f, 2.f, 3.f}}}});
}
关于c++ - 如何专门化网格物体类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56598858/