RE: [ROOT] CINT: vector<...> as argument of a function

From: Philippe Canal (pcanal@popgtw.fnal.gov)
Date: Mon Oct 30 2000 - 23:11:20 MET


Hi,

Thanks for your report, this problem is not solved yet but has a very simple
work around.

You need to actually use a vector<int> before defining a function taking one
as a parameter.

For example:

// macro2.C
#include <vector>
typedef vector<int> vector_int;
#include <vector>
void myfunc(vector<int> &v)
{
  cerr<<v[0]<<endl;
}

root [0] .L macro2.C
root [1] vector<int> v;
root [2] v.push_back(3);
root [3] myfunc(v);
3
root [4] 

Philippe.


> -----Original Message-----
> From: owner-roottalk@pcroot.cern.ch
> [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Daniel Barna
> Sent: Saturday, October 21, 2000 5:01 PM
> To: roottalk@pcroot.cern.ch
> Subject: [ROOT] CINT: vector<...> as argument of a function
> 
> 
> Hello Rooters,
> 
> Sorry if this has been already discussed.
> The stl vector seems to work fine, until I don't want to use
> it as an argument of a function. The following works:
> 
> // macro1.C
> #include <vector>
> void myfunc()
> {
>     cerr<<v[0]<<endl;
> }
> 
> root [0] .L macro1.C
> root [1] vector<int> v;
> root [2] v.push_back(3);
> root [3] myfunc();
> 
> But if I want to pass the vector as an argument:
> 
> //macro2.C
> #include <vector>
> void myfunc(vector<int> &v)
> {
>   cerr<<v[0]<<endl;
> }
> 
> root [0] .L macro2.C
> root [1] vector<int> v;
> root [2] v.push_back(3);
> root [3] myfunc(v);
> 
> Error: No symbol myfunc(v) in current scope  FILE:/tmp/25209daa_cint
> LINE:1
> Possible candidates are...
> filename       line:size busy function type and name  
> 
> How could I make the second example work?
> Thanks
> Daniel
> 
> 



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:36 MET