Hello again!
Ole Streicher writes:
> What I could imagine is that "root" has problems with namespaces; I
> declared the constructor of MyRun as
> my::MyRun::MyRun(std::string, int, std::string = "none");
> but Root thinks it is
> my::MyRun::MyRun(my::string,int,my::string=none);
I tried to debug this a bit and I found out that it is probably a
problem of rootcint. When I compile the minimal class definition
#include <string>
namespace my {
class MyClass {
public:
int GetMe(std::string);
ClassDef(MyClass, 1)
};
}
rootcint produces a function "static void G__setup_memfuncmycLcLMyClass(void)"
that contains a line
G__memfunc_setup("GetMe",466,G__mycLcLMyClass_GetMe_0_0,105,-1,-1,0,1,1,1,0,"u 'string' - 0 - -",(char*)NULL,(void*)NULL,0);
Here one can see, that "string" lacks the "std::" namespace. If I write
something from my own namespace as parameter, rootcint puts the name
including my namespace here. How shall I proceed here?
The other problem I found is that "rootcint" seems to not accept other
names for the LinkDef file than LinkDef.h:
$ cp LinkDef.h LD.h
$ rootcint -f MyClassDict1.cpp -c MyClass.h LinkDef.h
$ rootcint -f MyClassDict2.cpp -c MyClass.h LD.h
$ ls -l MyClassDict?.cpp
-rw-r--r-- 1 ole ole 13517 Sep 2 15:42 MyClassDict1.cpp
-rw-r--r-- 1 ole ole 6922 Sep 2 15:42 MyClassDict2.cpp
Why are they different? Is this a bug or a feature?
Ole
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:06 MET