Hello Prased,
I looked into this problem. It looks like if you change the
frind declaration as follows, it works fine.
friend X getRotatedX(X const & , double a_[3][3] );
Cint takes 'double [3][3]' as 'double**' and this causes the
problem. Please add variable name for workaround for now.
Thank you
Masaharu Goto
>Date: Fri, 20 Apr 2001 02:09:37 +0400 (RET)
>From: "B.V.L.S.Prasad" <shiva@mbu.iisc.ernet.in>
>To: roottalk@pcroot.cern.ch
>Cc: rootdev@pcroot.cern.ch
>Subject: [ROOT] problem with arrays as arguments ...help ???????
>
>Dear ROOTers and C-inters,
> I have a class called X which takes three double values, and
>my aim is to rotate these values with a [3][3] rotation matrix..
>Can I pass arrays as arguments to the member function ???
>It compiles perfectly with g++. I use linux.
>The contents are:
>****************************************************************
>#ifndef X_H
>#define X_H
>#include<iostream>
>using namespace std;
>class X
>{
> double x_, y_, z_;
>public:
> X(double x1,double y1, double z1);
> X();
> double getX() const { return x_;}
> double getY() const { return y_;}
> double getZ() const { return z_;}
>
>};
>
>X::X()
>{ cout<<"Please enter [x y z]: "; cin>>x_>>y_>>z_; }
>
>X::X( double x1_, double y1_, double z1_)
> :x_(x1_),y_(y1_),z_(z1_){}
>
>void X::showXYZ(ostream& os ) constfriend X getRotatedX(X const & , double
[3][3] );
>{ os<< x_<<'\t'<<y_<<'\t'<<z_<<endl; }
>
>X getRotatedX(X const & aa, double a_[3][3])
>{
> double a1_=a_[0][0]*aa.getX()+a_[0][1]*aa.getY()+ a_[0][2]*aa.getZ();
> double b1_=a_[1][0]*aa.getX()+a_[1][1]*aa.getY()+ a_[1][2]*aa.getZ();
> double c1_=a_[2][0]*aa.getX()+a_[2][1]*aa.getY()+ a_[2][2]*aa.getZ();
> X p(a1_,b1_,c1_);
> return p;
>}
>#endif
>*******************************************************
>Now I do:
>>>@user>>makecint -mk MakeBio -o bio -H x.h
>>>@user>>make -f MakeBio // I get the following error...
>******************************************************************
>/home/shiva/cint/cint -w0 -zbio -nG__cpp_bio.C -D__MAKECINT__
>-DG__MAKECINT -c-1 -A -DG__REGEXP -DG__SHAREDLIB -DG__OSFDLL -DG__ANSI
>x.h
>g++ -Wall -fguiding-decls -I/home/shiva/cint -DG__REGEXP -DG__SHAREDLIB
>-DG__OSFDLL -DG__ANSI -O2 -c G__cpp_bio.C
>G__cpp_bio.C: In function `int G___getRotatedX_3_3(G__value *, const char
>*, G__param *, int)':
>G__cpp_bio.C:152: passing `double **' as argument 2 of `getRotatedX(const
>X &, double (*)[3])'
>G__cpp_bio.C: In function `int G___getTranslatedX_4_3(G__value *, const
>char *, G__param *, int)':
>G__cpp_bio.C:162: passing `double **' as argument 2 of
>`getTranslatedX(const X &, double (*)[1])'
>G__cpp_bio.C: In function `int G___getRotoTranslatedX_5_3(G__value *,
>const char *, G__param *, int)':
>G__cpp_bio.C:173: passing `double **' as argument 2 of
>`getRotoTranslatedX(const X &, double (*)[3], double (*)[1])'
>make: *** [G__cpp_bio.o] Error 1
>
>***********************************************************
>
>where am I doing the mistake ???
>
>thankyou very much for the help .
>
>sincerely,
>prasad.
>
>
>
>Happy Day,
>Prasad, B.V.L.S.,
>Research Scholar.
>*****************************************************************************
> AIM OF SCIENTIFIC ADVENTURE : NATURE CRYSTALLOGRAPHY
>*****************************************************************************
>_________ __________ ________ ___________ ___________ ___________
>|Thought| | Fourier| | | |Different| | Fourier | |Structure|
>| waves |-->|Analysis|-->|NATURE|-->|Forms of |-->|Synthesis|-->| of |
>| | | | | | |Knowledge| | | | NATURE |
>|_______| |________| |______| |_________| |_________| |_________|
>
>*****************************************************************************
>shiva@mbu.iisc.ernet.in PROTEIN CRYSTALLOGRAPHY
...Shiva
>*****************************************************************************
>
>
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:43 MET