[ROOT] adding a template class in ROOT with cint

From: Benoit Revenu (revenu@cdf.in2p3.fr)
Date: Mon Feb 12 2001 - 10:36:08 MET


Hi,

I'm trying to add a template class in ROOT using cint but with no succes.
I had a look at the roottalk but I couldn't find any satisfactory answer.
Where can I find a complete correct example for that ?

For information, here is my code:

test.h file :
---------------------------------------
#ifndef TEST_H
#define TEST_H

#include <iostream>
#include "root.h"

using namespace std;

template<class Type> class Test : public TObject
{
  
private:
  
  Type _x;
  
public:
  
  
  void Print(){cout << _x << endl;}
  Test(){};
  Test(Type x){_x=x;}
  ~Test(){};
  ClassDef(Test,0)
    
    };

#endif
-----------------------------------------
test.cc file :
-----------------------------------------
#include "root.h"
#include "test.h"

ClassImp(Test)
-----------------------------------------
LinkDef.h file :
-----------------------------------------
#ifdef __CINT__

#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;

#pragma link C++ class Test<int>;

#endif
------------------------------------------
Makefile :
------------------------------------------
ROOTCFLAGS    = $(shell root-config --cflags)
ROOTLIBS      = $(shell root-config --libs)
ROOTGLIBS     = $(shell root-config --glibs)
ROOTCINT      = $(ROOTSYS)/bin/rootcint

# Linux with egcs
CXX           = g++
CXXFLAGS      = -O -Wall -fPIC
LD            = g++
LDFLAGS       = -g
SOFLAGS       = -shared
AR            = ar

CXXFLAGS     += $(ROOTCFLAGS)
LIBS          = $(ROOTLIBS)
GLIBS         = $(ROOTGLIBS)

OBJECTS= test.o cintDict.o
IOOBJECTS=

MKLIBS= libtest.a

all: $(MKLIBS)

clean:
	rm -f $(MKLIBS) *.o cintDict.*

cintDict.cc: test.h LinkDef.h
	$(ROOTCINT) -T -f $@ -c $^

.cc.o:
	$(CXX) -c $< $(CXXFLAGS) 

libtest.a: $(OBJECTS)
	$(AR) -r $@ $^

install:
	rm -f *.o cintDict.*



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:36 MET