multiset
-
Ich weiß nicht was falsch läuft.
habe <set> in Median.h includiertim 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 deklariertprivate: 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.