[ROOT] std::map with std::pair key

From: Ivana Hrivnacova (Ivana.Hrivnacova@cern.ch)
Date: Wed Apr 24 2002 - 16:39:38 MEST


 Hi,

 We have a problem with compiling
 dictionary for the class like the following:

MyClass.h:
------------
#ifndef MYCLASS_H
#define MYCLASS_H

#include <map>
#include <TObject.h>

class MyClass : public TObject
{
  public:
    typedef std::pair<Int_t, Int_t>     MyPair;
    typedef std::map<MyPair, Double_t>  MyMap;

    MyClass();
    virtual ~MyClass();

  private:
    // data members
   MyMap  fMap; // 

  ClassDef(MyClass,1)  //Motif
};

#endif //MyClass_H

  We declare it in LinkDef in a standard way as:
  #pragma link C++ class  MyClass+;

  The compiler complains for some "unknown" variable:
 
Compiling TtestCint.cxx ...
src/TtestCint.cxx: In function `void R__MyClass_fMap(TBuffer &, void *,
int)':
src/TtestCint.cxx:35: `unknown' undeclared (first use this function)
src/TtestCint.cxx:35: (Each undeclared identifier is reported only once
src/TtestCint.cxx:35: for each function it appears in.)
src/TtestCint.cxx:35: parse error before `;'

 which really appears in the generated dictionary.

 Is there some work around for this
 (besides implementing the pair class ourselves)?

 Best regards,

 Ivana

 P.S. We have Root version 3.03/03.

==============================================================
e-mail:  Ivana.Hrivnacova@cern.ch
address: Institut Physique Nucleaire, 91406 Orsay, France
phone:   (33) 01 69 15 65 94
==============================================================



#include "MyClass.h"

ClassImp(MyClass)

//_____________________________________________________________________________
MyClass::MyClass()
  : TObject() { 
  // Constructor
}

//_____________________________________________________________________________
MyClass::~MyClass() {
// 
}



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:51 MET