[fpc-pascal] Re: Converting code from C++ to FP....
    Aleksa Todorovic 
    alexione at gmail.com
       
    Sat Mar 19 13:33:27 CET 2011
    
    
  
On Sat, Mar 19, 2011 at 13:03, Bo Berglund <bo.berglund at gmail.com> wrote:
>
> Now I have found another very strange construct:
>
> void ForwardModel::SetMixedBoundaryCondition(const int iElec,
>   const double* SX0,
>   const double* SY0,
>   const double* SZ0,
>   double* SX,
>   double* SY,
>   double* SZ)
>
> Now it seems like the variable type declaration itself is a
> pointer....
>
> Instead of double *Name it is double* Name. What is the difference?
> It is still being used as an array:
>          SX[n1] = SX0[n1] * (1.0 - w1);
>
> Does C++ allow any placement of the * operator with the same meaning?
>
> And what does const double* mean? Pointer to some object but not
> allowed to change that object????
>
> Having programmed Delphi for 16 years this is hard to wrap ones head
> around. :-(
Welcome to the world of Chell ;-) I (unfortunately) have to use it
daily. Ok, not let's be helpful.
In the situation above, const has similar meaning as the one in Pascal
- you have some value which you are not allowed to change. So, your
header should be something like:
procedure ForwardModel.SetMixedBoundaryCondition(const iElec :
Integer; const SX0, SY0, SZ0 : array of double; var SX, SY, SZ : array
of double);
Hint: if you use trunk version of FPC, I suggest you use constref to
ensure SX0, SY0 and SZ0 are passed as pointer.
procedure ForwardModel.SetMixedBoundaryCondition(const iElec :
Integer; constref SX0, SY0, SZ0 : array of double; var SX, SY, SZ :
array of double);
As Jeppe suggested, you can also use pointers:
procedure ForwardModel.SetMixedBoundaryCondition(const iElec :
Integer; const SX0, SY0, SZ0 : pdouble; SX, SY, SZ : pdouble);
    
    
More information about the fpc-pascal
mailing list