我正在寻找一种方法来选择性地包含 c++ 类的成员以生成 POD 结构。我发现这工作得很好,但不标准:
#include <iostream>
template <int v, int n, int t>
struct Point
{
int vertex[v];
float normal[n];
double texcoord[t];
};
int main()
{
std::cout << (sizeof (Point<0,0,1>)) << std::endl;
std::cout << (sizeof (Point<1,0,1>)) << std::endl;
std::cout << (sizeof (Point<1,1,2>)) << std::endl;
std::cout << (sizeof (Point<0,0,0>)) << std::endl;
return 0;
}
所以 Point<1,0,0> 将只包含一个顶点(实际上 int 类型实际上是 vector3 类型),依此类推。这样做的主要原因是为了轻松支持 OpenGL 的交错数组。