Hello all,
I am trying to add a class to get Root functionalities but I am not being fortunate to do so…
I’ve searched a lot the documentation and exhausted internet search resources without being able to solve my problem, I come here as the last resource.
So, I have something like this (inside Athena framework):
namespace Ringer {
// Declare interface base for all Ringer procedure types:
class IRingerProcedure : public TClass {
//public:
//virtual ~IRingerProcedure(){;}
//protected:
//IRingerProcedure(){;}
/** Define it as a Root TObjebt, disable I/O */
ClassDef(Ringer::IRingerProcedure,0)
// Also tried ClassDef(IRingerProcedure,0) and ClassDef(IRingerProcedure,1)
};
}
The destructor and ctor are commented but I’ve also tried with them uncommented (in fact, the original implementation uses the ctor as protected to ensure that this class is abstract, but anyway, all I want is it to work first), but none worked.
I’ve tried to add the dtor and ctor implementations because I read that the destructor should be virtual https://root.cern.ch/drupal/content/adding-your-class-root-classdef#why and the user manual says that the object I/O (I know that this is not the case, because I disabled it, but anyway) will need one implementation of ctor that he can use (I’ve used it as public as well). But yes, they are inlined: is it a problem?
This class is inherited by many others, all of them complaining that they couldn’t find the vtable for this (and many other) class(es).
So, I’ve also tried to add ClassImp on a .cxx including this file, and tried to do ClassImp(Ringer::IRingerProcedure) and its version without namespace.
I am using genreflexdict, with the selection file as:
<lcgdict>
<enum pattern="Ringer::*"/>
<class pattern="Ringer::*" />
<!-- Remove extra Root catchups by above patterns -->
<exclusion>
<class pattern="*ROOTDict::*" />
</exclusion>
And in the dict header file I include the files needed.
If you can’t help me with the details, is it possible for you to inform me how to handle ClassDef and (template)ClassImpl when my class/template is within namespace and if it is supposed to work within abstract (or even empty) classes/templates or how should I work with them in that case.
Edit: I’ve forgotten to mention, I think I don’t need the ClassImpl functionalities, as it seems to add only the Html documentation support (which is not needed).
In advance,
Werner.