我正在尋找一種方法來選擇性地包含C++類的成員來生成POD結構。我發現這工作得相當好,但它們是非標準:帶有可選成員的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;
}
有那麼點< 1,0,0>將只包含一個頂點(int類型實際上是在實踐中的Vector3類型),等等。主要原因是爲OpenGL輕鬆支持交錯數組。
是什麼讓你認爲這有效?你使用什麼編譯器?在'gcc'中,有一個擴展,你可以寫'int x [0]',這並不意味着'x'不存在。作爲參考:http://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html – 2012-08-12 20:23:51
嗯,它意味着,它不需要空間,它會指向前一個成員之後的地方,對嗎?我還沒有真正把這個工作,但它似乎工作上面的測試。不過,我認爲這是一個解決問題的好方法。 – solinent 2012-08-12 20:27:51