vector durchlaufen
-
Jetzt musst du uns nurnoch sagen, welche Zeile Nr 137 ist. Ich rate mal (da du uns keinen Code zeigst): du hast einfach eine freie Funktion definiert, die mit der Stelle, wo du dev definierst, nichts zu tun hat? Dann ist das auch kein Wunder - woher soll der Compiler da wissen was dev ist? Stumpf abschreiben bringt wie du siehst nicht viel. Verstehen und an deine Situation anpassen ist die Devise.
-
pumuckl schrieb:
Jetzt musst du uns nurnoch sagen, welche Zeile Nr 137 ist. Ich rate mal (da du uns keinen Code zeigst): du hast einfach eine freie Funktion definiert, die mit der Stelle, wo du dev definierst, nichts zu tun hat? Dann ist das auch kein Wunder - woher soll der Compiler da wissen was dev ist? Stumpf abschreiben bringt wie du siehst nicht viel. Verstehen und an deine Situation anpassen ist die Devise.
Das dev Problem ist gelöst ... aber die andere Zeile leider nicht. Halt mich nicht für ganz dumm. Das ich das ganze ding in meine Klasse einbauen muss ist klar.
Es funktioniert einfach diese Zeile nicht:
std::assert(i < dev.size());
-
Enno schrieb:
Halt mich nicht für ganz dumm.
Du machst es einem sehr schwer ...
-
Belli schrieb:
Du machst es einem sehr schwer ...
Nur für dich Belli.

-
lass mal das std:: weg. Und noch was: anstelle von assert wäre es an dieser Stelle eventuell sogar besser, eine Exception zu werfen (->Grundlagenbuch), weil kein Programmierfehler vorliegt, sondern eine falsche Eingabe des Benutzers. Aber das nur so am Rande... komm erstmal mit deinem Code klar, dann kannst du dich um sowas kümmern.
Enno schrieb:
Halt mich nicht für ganz dumm.
Nun, du zeigst keinen bzw. unvollständigen Code, gehst nicht auf unsere Fragen ein, lieferst deine Aufgabenbeschreibung nur sehr bruchstückhaft, eignest dir keine Grundlagen an, liest dir die "Fragestellungs-Threads" aus pumuckels Signatur nicht durch,...
Wir versuchen (trotzdem), dir zu helfen. Gerade bei Anfängern sind es häufig so offensichtliche Sachen wie ein vergessener Header.
-
daddy_felix schrieb:
lass mal das std:: weg. Und noch was: anstelle von assert wäre es an dieser Stelle eventuell sogar besser, eine Exception zu werfen (->Grundlagenbuch), weil kein Programmierfehler vorliegt, sondern eine falsche Eingabe des Benutzers. Aber das nur so am Rande... komm erstmal mit deinem Code klar, dann kannst du dich um sowas kümmern.
Enno schrieb:
Halt mich nicht für ganz dumm.
Nun, du zeigst keinen bzw. unvollständigen Code, gehst nicht auf unsere Fragen ein, lieferst deine Aufgabenbeschreibung nur sehr bruchstückhaft, eignest dir keine Grundlagen an, liest dir die "Fragestellungs-Threads" aus pumuckels Signatur nicht durch,...
Wir versuchen (trotzdem), dir zu helfen. Gerade bei Anfängern sind es häufig so offensichtliche Sachen wie ein vergessener Header.
Ich bin ziemlich dankbar für eure Hilfen und alles.
Trotzdem denke ich, ich gehe auf alles ein. Ich lese alles 2 mal damit ich auch EDITs mit bekomme.
Ich gebe zu ich hab nur kurz in den link aus der sig rein geschaut. Werde ich nachholen. Dein tipp mit dem std hat geklappt.
Rest stimme ich zu und werde draus lernen.
-
Enno schrieb:
Es funktioniert einfach diese Zeile nicht:
std::assert(i < dev.size());Siehst du - das ist das erste mal, dass du uns den Code gezeigt hast, den du tatsächlich bei dir stehen hast. In den Beispielen von daddy_felix stand nirgendwo ein std:: drin, und wie du siehst war das Absicht.
Die Doku, die du verlinkt hast, ist zugegebenermaßen etwas irreführend:void assert (int expression);in der ersten Zeile dort ist quatsch. Allerdings steht direkt danach, dass es sich bei assert um ein Makro handelt, nicht um eine echte Funktion, und damit fällt auch std wieder weg
-
pumuckl schrieb:
Siehst du - das ist das erste mal, dass du uns den Code gezeigt hast, den du tatsächlich bei dir stehen hast. In den Beispielen von daddy_felix stand nirgendwo ein std:: drin, und wie du siehst war das Absicht.
Die Doku, die du verlinkt hast, ist zugegebenermaßen etwas irreführend:void assert (int expression);in der ersten Zeile dort ist quatsch. Allerdings steht direkt danach, dass es sich bei assert um ein Makro handelt, nicht um eine echte Funktion, und damit fällt auch std wieder weg
Danke für die erklärung.

Allerdings muss ich mir nun selber irgendwas noch mal zusammen suchen. Irgendwie brauch ich was anderes was ich wohl nicht beschreiben kann. ^^
-
Wenn du es nicht auf Deutsch (welches du recht gut kannst) beschreiben kannst, wie wie willst du es dann selber in C++ (welches du nicht wirklich kannst) beschreiben? Weißt du überhaupt selber, was du willst?
Ich habe den Verdacht, dass das was du möchtest schon gekommen ist (da so ziemlich alle Varianten hier schon zweimal oder öfters vorgeführt wurden), du es bloß nicht gemerkt hast, da du die Antworten nicht liest/verstehst, sondern auf eine Komplettlösung wartest.
-
SeppJ schrieb:
Wenn du es nicht auf Deutsch (welches du recht gut kannst Danke.) beschreiben kannst, wie wie willst du es dann selber in C++ (welches du nicht wirklich kannst) beschreiben? Weißt du überhaupt selber, was du willst?
Ich habe den Verdacht, dass das was du möchtest schon gekommen ist (da so ziemlich alle Varianten hier schon zweimal oder öfters vorgeführt wurden), du es bloß nicht gemerkt hast, da du die Antworten nicht liest/verstehst, sondern auf eine Komplettlösung wartest.
Ich habe alles hier vorgeschlagene entweder ausprobiert oder verstanden. Ich kann es gerne noch einmal versuchen alles zu erklären, was ihr sicher nicht wollt.

Ich hab auch eben hier in der Firma noch einmal nach gefragt was ich genau machen soll.
-
Morgen.
Also Jungs und vllcht ja auch Mädels.Ich hab es nun so:
bool SYSInfo::nextNet(){ if(Dev.empty()) return false; unsigned int i = 0; if(i <= Dev.size()){ return false; } i++ Dev.at(0); return true; }Das funktioniert aber nicht. Ist ja auch logisch da i kleiner ist als die Dev.size(). Nun meine Frage ist: Wie schaffe ich es das ich da keine endlos Schleife baue aber ich trotzdem meine Zahlen abfragen kann aus jedem Index.
So steht es dann in der main aus:
while(sys_info.nextNet()==true){ std::cout << "Bytes received: " << sys_info.getBytesr() << std::endl; }Ich weiß nicht vllcht wird durch den Code klar was ich vorhabe. Es soll mir für jeden Index bytes recivied ausgegeben werd. In diesem Fall ja 3 mal.
-
Anhand deiner Informationen vermute ich, dass du sowas willst:
for(std::vector<SYSInfo>::const_iterator cit = Dev.begin(); cit != Dev.end(); ++cit) std::cout << "Bytes received: " << cit->getBytesr() << std::endl;Edit: Du solltest wirklich so langsam lernen, wie du mit einer Schleife über einen vector iterierst -> Grundlagenbuch. Wir haben das schon mehrfach in diesem Thread gepostet.
-
daddy_felix schrieb:
Du solltest wirklich so langsam lernen, wie du mit einer Schleife über einen vector iterierst -> Grundlagenbuch. Wir haben das schon mehrfach in diesem Thread gepostet.
Nicht nur in diesem ...
-
daddy_felix schrieb:
Anhand deiner Informationen vermute ich, dass du sowas willst:
for(std::vector<SYSInfo>::const_iterator cit = Dev.begin(); cit != Dev.end(); ++cit) std::cout << "Bytes received: " << cit->getBytesr() << std::endl;Edit: Du solltest wirklich so langsam lernen, wie du mit einer Schleife über einen vector iterierst -> Grundlagenbuch. Wir haben das schon mehrfach in diesem Thread gepostet.
Nein.
Belli schrieb:
daddy_felix schrieb:
Du solltest wirklich so langsam lernen, wie du mit einer Schleife über einen vector iterierst -> Grundlagenbuch. Wir haben das schon mehrfach in diesem Thread gepostet.
Nicht nur in diesem ...
Ich weiß nicht aber vllcht habt ihr auch nicht verstanden was ich wollte.
Aber tada so ist fertig:bool SYSInfo::nextInterface(){ if(Dev.empty()) return false; if(DevPos >= (Dev.size()-1)){ return false; } DevPos++; Dev.at(DevPos); return true; }do{ std::cout << "\n" << sys_info.getName() << "\n" << "Bytes received: " << sys_info.getBytesr() << "\n" << "Packets received: " << sys_info.getPacketr() << "\n" << "Errors received: " << sys_info.getErrsr() << "\n" << "Drops received: " << sys_info.getDropr() << "\n" << "Fifos received: " << sys_info.getFifor() << "\n" << "Frames received: " << sys_info.getFramer() << "\n" << "Compressed received: " << sys_info.getCompressedr() << "\n" << "Multicasts received: " << sys_info.getMulticastr() << "\n" << "Bytes transmitted: " << sys_info.getBytest() << "\n" << "Packets transmitted: " << sys_info.getPackett() << "\n" << "Errors transmitted: " << sys_info.getErrst() << "\n" << "Drops transmitted: " << sys_info.getDropt() << "\n" << "Fifos transmitted: " << sys_info.getFifot() << "\n" << "Colls transmitted: " << sys_info.getCollt() << "\n" << "Carriert transmitted: " << sys_info.getCarriert() << "\n" << "Compressed transmitted: " << sys_info.getCompressedt() << '\n'; }while(sys_info.nextInterface()==true);Jetzt fehlt mir nur noch eine setFunktion um DevPos setzen zu können.

-
Herzlichen Glückwunsch. Du hast gerade einen Iterator nachprogrammiert.
Wir haben nicht verstanden, was du willst? Du hast geschrieben
Enno schrieb:
Es soll mir für jeden Index bytes recivied ausgegeben werd.
Ich gebe dir eine Schleife, die für jeden Index "bytes received" ausgibt. Das ist nun nicht mehr das, was du willst???
-
Ihhh, ein Java-Iterator.
-
daddy_felix schrieb:
Herzlichen Glückwunsch. Du hast gerade einen Iterator nachprogrammiert.
Cool.
daddy_felix schrieb:
Wir haben nicht verstanden, was du willst? Du hast geschrieben
Enno schrieb:
Es soll mir für jeden Index bytes recivied ausgegeben werd.
Ich gebe dir eine Schleife, die für jeden Index "bytes received" ausgibt. Das ist nun nicht mehr das, was du willst???
Wie gesagt ich konnte nicht erklären was ich wollte. Das wollte ich, da es meine vorgaben waren es so zu machen. Wo ist dein Problem?
-
Enno schrieb:
daddy_felix schrieb:
Herzlichen Glückwunsch. Du hast gerade einen Iterator nachprogrammiert.
Cool.
Uncool. Wenn es eine fertige Lösung gibt, sollte man diese verwenden.
-
daddy_felix schrieb:
Enno schrieb:
daddy_felix schrieb:
Herzlichen Glückwunsch. Du hast gerade einen Iterator nachprogrammiert.
Cool.
Uncool. Wenn es eine fertige Lösung gibt, sollte man diese verwenden.
Uncool. Wenn es verlangt wird und man es so machen soll.
-
Enno schrieb:
Uncool. Wenn es verlangt wird und man es so machen soll.
Das berühmte "Professoren-Phänomen", kenne ich leider nur allzu gut.
Leider ging aus deinen Posts nicht wirklich heraus, was genau Vorgabe ist und womit du genau Implementierungsprobleme hast. Wenn du einen vector hast und schreibst, du willst eine Funktion für alle Elemente des vectors aufrufen, dann darfst du dich auch nicht beschweren, wenn ich dir genau das liefere.