multiset



  • Ich weiß nicht was falsch läuft.
    habe <set> in Median.h includiert

    im Median.cpp

    const double*
            pdParam( vecParas[0].Get<double>(u));           //jeweiliger Wert von u
           //hier kommt mein multiset:   
            museMedianParams.insert(museMedianParams.begin(),*pdParam);
    

    im Median.h

    private:
         std::multiset<const double*> museMedianParams;   //hier E2285
    

    Dann komm der Fehler:
    E2285 Keine Übereinstimmung für 'argument(e) Compiler - Fehler
    Für die Argumente wurde keine Funktion mit passenden Parametern gefunden. Überprüfen Sie die an Funktionen oder überladene Funktionen übergebenen oder zu übergebenden Parameter.



  • Es ist mir ja selbst peinlich, aber es klappt einfach nicht.
    multimap benötige ich, um die Zahlen aus einem Value zu speichern und aufsteigend zu sortieren.
    in .h so deklariert

    private:
         std::multiset<double> museMedianParams;
    

    in .cpp sieht es dann so aus

    //Median: ist der mittlere Wert einer Zahlenreihe oder der Mittelwert der zwei mittleren Werte
    
          for (  unsigned
                u(0),
                uEnd(vecParas[0].GetSize());
                uEnd > u;
                ++u)
          {    //for 1 auf
    
              const double*
            pdParam( vecParas[0].Get<double>(u));           //jeweiliger Wert von u
           //museMedianParams.insert(3.);  //zum probieren, ob multiset Werte einfügt
           museMedianParams.insert(*pdParam);  //übernimmt wert aus u
    
          }  //for 1 zu
    
          museMedianParams.size();              //Anzahl der Paramerter mit .size, sollten derzeit 4 Testwerte sein (aus CValue Val1("n[7][3.][4][5]"));
          //solange ich in der for-Schleife war, hatte ich die richtige Anzahl in Überwachte Ausdrücke,ab hier bekomme ich dann laufend ansteigende Werte ab 32 aufwärts (heul)
          fmod(museMedianParams.size(),2.);   //fmod um Rest zu berechnen
    
          if(fmod(museMedianParams.size(),2.) == 0)       //wenn Rest gleich null
          {
    
            //brauche ich den Mittelwert der beiden mittleren Werte
            std::multiset<double>::iterator museIt;      //Iterator bilden
            museIt = museMedianParams.find(7.);          //funktioniert
            //museIt = museMedianParams.begin();           //funktioniert nicht
            //[C++ Fehler] sfc_fun_Median.cpp(168): E2034 Konvertierung von '__rwstd::__rb_tree<double,double,__rwstd::__ident<double,double>,less<double>,allocator<double> >::const_iterator'
            //nach '__rwstd::__rb_tree<double,double,__rwstd::__ident<double,double>,less<double>,allocator<double> >::iterator' nicht möglich
    
          }
          else if(fmod(museMedianParams.size(),2.) != 0)   //wenn Rest nicht null
          {
            //brauche ich den mittleren Wert
          }
    
          return 0;
        }
    

    Ich kapiers einfach nicht, bekomme immer diese Warnung
    C++ Warnung] sfc_fun_Median.cpp(150): W8037 Nicht-konstante Funktion multiset<double,less<double>,allocator<double> >::insert(const double &) für konstantes Objekt aufgerufen
    oder Fehlermeldung nach dem kompilieren und linken
    werde aus den Erklärungen, die ich so gefunden habe nicht wirklich schlau,
    die Auskünfte hier sind auch nicht das wahre und außerdem klappt das mit dem Iterator auch nicht
    Warum bekomme ich für mein museMedianParams.size() plötzlich 32,33,34 etc.?
    Warum klappt zwar das: museIt = museMedianParams.find(7.);
    aber das nicht: museIt = museMedianParams.begin(); ?
    Sollte jemanden also irgendwas direkt anspringen, was hier nicht stimmt, bitte ich um Hilfe.


Anmelden zum Antworten