Hello, I'm having trouble using a class definition containing complex numbers when it is compiled as a shared library using CINT. The definition works fine in interpreted mode. I've included examples below. For the record I am using Mandrak Linux 7.2 and ROOT v2.25 which I compiled from sources. Many thanks in advance for your help. Malcolm ************************************************** Interpreted result ************************************************** root [2] .L /home/davidson/root/macros/test/IEM_TEST.cpp root [3] IEM iem; root [4] iem.print_par(); => Dielectric constant = (3,0.1) // OK root [5] iem.setEPS(complex<float>(10.0,0.1)) root [6] iem.print_par(); => Dielectric constant = (10,0.1) // OK ************************************************** Using compiled library ************************************************** root [15] .L /home/davidson/root/macros/test/IEM_TEST.cpp+ Creating shared library /home/davidson/root/macros/test/IEM_TEST.so Note: operator new() masked 1c Note: operator delete() masked 1c Class IEM: Streamer() not declared Class IEM: ShowMembers() not declared root [16] .x /home/davidson/root/macros/test/TEST.cpp Warning: File "iostream.h" already loaded Dielectric constant = (3,0.1) //OK Dielectric constant = (5.35546,5.35546) //WRONG should be (10,0.1) Here are the class definition and script ************************************************** IEM_TEST.cpp ************************************************** #include <complex> #include <iostream.h> class IEM { public: IEM(); void setEPS(const complex<float>&); void print_par(); private: complex<float> eps; }; IEM::IEM() { eps=complex<float>(3.0,0.1); } inline void IEM::setEPS(const complex<float>& eps_in) { eps=eps_in; } void IEM::print_par(){ cout << "Dielectric constant = " << eps << endl; } ************************************************** Calling function ************************************************** { gROOT->Reset(); #include<iostream.h> #include<complex> IEM iem; complex<float> eps; iem.print_par(); iem.setEPS(complex<float>(10.0,0.1)); iem.print_par(); } <>------------------------------------------------<> Malcolm W. J. Davidson Centre D'Etudes Spatiales de la Biosphere (CESBIO) UMR 5639 CNES-CNRS-UPS 18, Avenue Edouard Belin F-31401 Toulouse Cedex 4 FRANCE e-mail : davidson@cesbio.cnes.fr phone (33)(0)5.61.55.85.84 fax (33)(0)5.61.55.85.00 <>------------------------------------------------<>
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:38 MET