string funktion
-
Hallo,
ich hab ein kleines Problem. Ich habe eine String Funktion:string IntToString(int d){ stringstream ss; ss << d; return (ss.str()); }in der Datei functions.cpp
Ich habe diese Funktion in der Datei functions.h folgendermassen deklariert:
string IntToString(int d);Nun spuckt VC++2008EE den folgenden Fehler aus:
1>e:\source code - kopie\maturarbeit\maturarbeit\functions.h(4) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'IntToString'
1>e:\source code - kopie\maturarbeit\maturarbeit\functions.h(4) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>e:\source code - kopie\maturarbeit\maturarbeit\functions.h(4) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.Das liegt wohl daran, dass er string nicht als Rückgabetyp sondern halt als etwas anderes annimmt.
Nun habt ihr eine Idee wie man dies lösen könnte?
Man muss noch anmerken, in der Datei functions.cpp ist <string> includiert
GrussLukas
-
Ist <string> included?
-
// Entweder std::string IntToString(int d){ std::stringstream ss; ss << d; return (ss.str()); } // Oder (aber bitte nicht in Headern, ohne die Probleme zu kennen und zu verstehen using namespace std; // hinter den includes, noch besser: So lokal wie möglich ... std::string IntToString(int d){ std::stringstream ss; ss << d; return (ss.str()); }
-
wozu eigentlich die klammern bei der return-funktion?
-
volkard schrieb:
wozu eigentlich die klammern bei der return-funktion?
Warum nicht? Schadet nicht, und wenns das für ihn lesbarer macht isses doch ok
-
Herzliches Dankeschön für diese kompetente Antwort.
Ich hbae nurnoch eine kleine Frage.
Ich habe 2 Funkionen die eine (framestarted()) aktualisiert die Anzeige. Und ich habe eine weiter funktion (calculations()) welche die neuen Daten für die Anzeige berechnet.
Der Funktion calculations() wird evt.timeSinceLastFrame übergeben, da die Berechnungen einen Zeitschritt brauchen.
Nun wird in framestarted() calculations() aufgerufen.
Nun meine Frage:
wäre es effektiv calculations in einen Thread zu packen, welcher dann andauernd läuft und framestarted sich die Daten via Mutex oder ähnliches holt?Danke
Lukas
-
1. Neues Problem -> Neuer Thread
2. Bei Optimierungen muss man immer sehr vorsichtig vorgehen und dabei genau analysieren. Daher braucht man auch sehr genaue Informationen, welche man sich zum Beispiel über einen Profiler holt. Mit den wenigen Informationen, welche du uns gibst, kann man eigentlich nur schätzen, bzw. pauschale Aussagen setzen.
3. Pauschal kann ich die folgenden zwei Dinge sagen:
- Ein Thread zu starten ist teuer, daher sollte man nicht immer neue Threads starten, sondern laufende am Leben erhalten und höchstens Schlafen legen.
- Synchronisationen sind teuer. Es ist am besten, wenn man so wenig Synchronisationen wie möglich hat.
4. Vielleicht wäre diese Diskussion noch interessant für dich:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-21275.html
Oder allgemein: LogiktickGrüssli