Re: Passing array by reference
In article <XVqni.57$SI5.43@newsfe2-gui.ntli.net>, john
<reply@newsgroup.com> wrote:
Guys,
quick question - got a function like:
void CalculateApproach(float (&Params)[4], double (&ObjectPos)[3],
double (&VehiclePos)[4], double (&NewPos)[4])
OK, the seconds argument should come from an array but this array is
bigger than the expected 3 i.e it has 10 elements but I only need 4,5
and 6 so I tried something like:
CalculateApproach(fAppParams, &dFeatures[4], dCurVehPos, dNewVehPos);
but it fails for me. Am I trying to do something that is not allowed and
hence should just make new array[3] and copy my values in and then pass
it into the function or can someone give me hint towards the syntax i
should be using if it can work?
typedef double DoubleFour[4];
typedef double DoubleThree[3];
void CalculateApproach(DoubleFour &,DoubleThree &,DoubleFour
&,DoubleFor &);
CalculateApproach(fAppParams, (DoubleThree &)(dFeatures[4]),
dCurVehPOs,dNewVehPos);
this should work, as an array must be decayable to a pointer so the
cast is only to tell the compiler what is going on. A reinterpret_cast
will be needed and this is a strong warning that it might not be
portable.
---
[ comp.std.c++ is moderated. To submit articles, try just posting with ]
[ your news-reader. If that fails, use mailto:std-c++@ncar.ucar.edu ]
[ --- Please see the FAQ before posting. --- ]
[ FAQ: http://www.comeaucomputing.com/csc/faq.html ]