首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++/C怎么返回一个临时数组

2012-06-05 
C++/C如何返回一个临时数组?我有一个类class Vector3 {float x,y,z}用于储存3维向量但是openGL有些函数,

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。这样最省事了,

C/C++ code
........union{    struct    {        float x;        float y;        float z;    };    float v[3];};float *Vector3::Getfloat(){    return v;}........ 

热点排行