Hi,
I have the following class:
[code]class DataObject
{
protected:
void* data;
[...]
public:
DataObject();
virtual ~DataObject();
[...]
operator Int_t();
operator Float_t();
operator Double_t();
operator Int_t*();
operator Float_t*();
operator Double_t*();
operator vector<Int_t>*();
operator vector<Float_t>*();
operator vector<Double_t>*();
};[/code]
The cast operators are similar to this one:
[code]DataObject::operator vector<Double_t>()
{
if(objectType != OTVector || baseType != BTReal || realType != RTDouble)
{
E_MESSAGE("Wrong object type (requested vector, is " << typeName << “)”);
throw bad_vartype();
}
return ((vector<double>*)data);
}[/code]
Dictionary is being generated by using #pragma link C++ class DataObject+;
When testing this in interpreted ROOT, I find that the cast operator for the vector pointers is not being called at all. I do something like
DataObject d = DataObjectStore["bla"];
vector<double>* v = (vector<double>*)d;
Any ideas?
Cheers,
Johannes.