int main(int argc, char* argv[]){
TApplication app("app",&argc,argv);
TFile *f = new TFile("ggdATLAS_Appendix_06.root");
TTree *t2 = (TTree*)f->Get("t2");
t2->Print();
cout<<"probleme1"<<endl;
int iprov,ntrack;
double e[3],px[3],py[3],pz[3];
double x3;
double pt[3],y[3];
double x1,x2;
float pdf_weight[1000];
float weight;
// we get the value stored into the header for the normalisation
TList *list = t2->GetUserInfo();
cout<<"probleme2"<<endl;
list->Print();
TVectorT<float> &v = *(list->At(0));
cout<<"probleme3"<<endl;
float& nb_evt = v[0];
cout<<"probleme3"<<endl;
float& xsec = v[1];
cout<<"probleme3"<<endl;
float& sqrt_s = v[2];
cout<<"PROBLEME"<<endl;
float norma = xsec/nb_evt;
cout<<"probleme3"<<endl;
Voici la première partie de mon code , la où ca beug visiblement. Quand je compile, j'obtiens l'erreur:
error: invalid initialization of reference of type ‘TVectorT<float>&’ from expression of type ‘TObject’
TVectorT<float> &v = *(list->At(0));
J'ai essayé de modifier cette ligne plusieurs fois, mais je n'arrive pas à trouver la syntaxe qui convient . Or j'ai besoin de ce vecteur v dans la suite de mon programme. Quelqu'un peut-il m'aider ?
Il sent bien le renfermé ce code tout moisi avec des pointeurs nues et autres tableau à la C.
Moi aussi, je suis comme le compilateur, je comprends pas ce que vous tentez de faire car à gauche du égale vous avez une référence sur un TVectorT<float> et le bidule à droite, bin c'est un TObject.
Vous avez un opérateur d'affectation dans TVectorT<float> qui prend en entré un TObject ? Ça serait suspect.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
Attention à l'héritage et les templates, TVectorT<float> et TVectorT<double> ne partagent pas forcément les mêmes classes mère.
Ici c'est un TVectorT<float>, pas un TVectorT<double>.
"TVectorT<float>" dérive de "TObject", ok, mais cela veut dire qu'un peu utiliser un "TVectorT<float>" à tous les endroits où on peut utiliser un "TObject", pas l'inverse.
Vous ne pouvez pas faire passer un "TObject" pour un "TVectorT<float>" et c'est ce que vous reproche le compilateur.
Si ce n'est pas un problème d'algorithmie, l'usage de pointeurs nus, et de cast à la C bien cracra, à fait perdre le typage correct de vos variables.
Renforcez le typage de vos classes pour ne pas avoir à faire tous ces casts et ces pointeurs nus.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
Je ne trouve pas de solutions, mais peut-être avez vous une autre idée. Au final, la seule chose dont j'ai besoin, c'est de récupérer les données de ma liste, ce sont 3 nombres, dont j'ai besoin d'utiliser comme variables au format double par la suite dans mon programme. Comment puis-je faire ça?
Donnez les signatures des fonctions que votre code utilise.
On pourra savoir si c'est votre code client qui paume le typage ou si c'est les fonctions que vous utilisez qui sont typées avec les pieds.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
problème de compilation - erreur d'initialisation
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
GitHub