Hi, I am not sure why you do __both__ .L FitRing.cxx++ .L FitRing.cxx They are 2 alternate way of loading the file. The former uses the compiler to produce the executable code, while the later uses the interpreter. I recommend NOT using 'main' as the name of your function (ACLiC can not expose 'main'). I also recommend using only one '+' as it lets ACLiC decides whether your library really needs to be rebuild or not. Once I renamed main into FitRing, I can do: .L FitRing.cxx+ FitRing(); Doing both .L FitRing.cxx++ .L FitRing.cxx leads to the vector<double> to be not fully initialized. (hence the missing function). [Actually this would have work anyway if you had generated the cintdlls (because you are using std::vector<double> or if you had added #ifdef __MAKECINT__ #pragma link C++ class vector<double>; #endif in you FitRing.cxx file. Cheers, Philippe. -----Original Message----- From: owner-roottalk@pcroot.cern.ch [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Reinhardt Chamonal Sent: Wednesday, November 19, 2003 9:44 AM To: roottalk@pcroot.cern.ch Subject: [ROOT] push_back problem Hi, I am using root 3.05/05 I ran into trouble trying to push_back values in a stack. I do the following in root: .L FitRing.cxx++ .L FitRing.cxx main() The error is: Error: Can't call vector<double,allocator<double> >::push_back(param1) in current scope FILE:FitRing.cxx LINE:90 Possible candidates are... filename line:size busy function type and name (in vector<double,allocator<double> >) Error: non class,struct,union object $contain used with . or -> FILE:FitRing.cxx LINE:90 The code is as following: #include "TH2.h" #include "TFile.h" #include "TBenchmark.h" #include "TAxis.h" #include "TTree.h" #include "TF1.h" #include "TPaveLabel.h" #include "TCanvas.h" #include "TSystem.h" #include <iostream> #include <vector> void GetIt(std::vector<double> *contain); int main(){ std::vector<double> y; GetIt(&y); } void GetIt(std::vector<double> *contain) { .. double param1=0; ... param1=double(total->GetParameter(1)); if(param1!=0) contain->push_back(param1); ... } Thanks for the help
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:16 MET