C++/C如何返回一个临时数组?
我有一个类
class Vector3 {float x,y,z;}
用于储存3维向量
但是openGL有些函数,要求把3维向量储存在一个大小为3的float数组中进行操作比如:glVertex3fv(float[3]);
以及自定义的CalculateNormal(float[3], float[3], float[3])
于是我希望写一个Getfloat()函数,用于返回Vector3中的x,y,z
float *Vector3::Getfloat()
{
float tempf[3];
tempf[0]=x;
tempf[1]=y;
tempf[2]=z;
return tempf;
}//但返回临时变量的指针明显是不对的
但是我不想在Vector3中加入tempf[],因为Vector的数量很庞大,我不想让他的大小翻番
如果在类外定义tempfloat[3],因为显示的需要要多个,比如tempfloat1[3]-tempfloat7[3],也很麻烦
而且显示的时候会被搞得七荤八素,弄错了都不知道
所以想问下大家有什么好办法么?
[解决办法]
要知道union是不会增加空间的,先理解一下union。这样最省事了,
........union{ struct { float x; float y; float z; }; float v[3];};float *Vector3::Getfloat(){ return v;}........