Seek & Find Δημοσιεύτηκε Φεβρουάριος 3, 2011 #1 Δημοσιεύτηκε Φεβρουάριος 3, 2011 Καλημερα σας, εχω τον παρακατω απλο κωδικα: και παιρνω compile error "String out of this scope" στο σημειο με τα bold. Αν μπορει καποιος ας βοηθησει γιατι δεν καταλαβαινω τι φταιει..file.h#include <cstdlib>#include <iostream>#include <fstream>#include <string>#include <cstring>using namespace std;int change_v([U][B]string[/B][/U] v);file.cpp#include "file.h"int change_v(string v){ v.append("hello"); v.append("world"); cout << v << endl;}main.cppint main(){ change_v("Hi! "); return 0;}ευχαριστω
Jaco Φεβρουάριος 4, 2011 #2 Φεβρουάριος 4, 2011 Θα έπρεπε να κάνει κανονικά compile, αρκεί βέβαια να έχεις κάνει include και το file.h στο main.cpp... Τι compiler χρησιμοποιήσεις...? Μήπως δεν είναι αυτός όλος ο κώδικας...?Επίσης 1-2 παρατηρήσεις...//file.h#ifndef FILE_H_#define FILE_H_#include <cstdlib>#include <iostream>#include <fstream>#include <string>#include <cstring>int change_v(std::string v);#endif /* FILE_H_ */Πάντα στα headers βάζεις το #ifndef/define/endif, γιατί αν τα κάνεις include από δυο αρχεία θα έχεις πρόβλημα... Επίσης ποτέ στα header files δεν δηλώνεις use από namespaces, αλλά δηλώνεις τις μεταβλητές σου μαζί με το namespace τους, πχ std::string... το namespace το δηλώνεις μόνο στο cpp αρχείο και αυτό το κάνεις για να μην έχεις conflicts μεταξύ των namespaces όταν κάνεις include πολλά headers σε ένα αρχείο...//file.cpp#include "file.h"using namespace std;int change_v(string v){ v.append("hello"); v.append("world"); cout << v << endl; return(v.size()); //return length}Πάντα κάνεις return ένα value, όταν έχεις δηλώσει οτιδήποτε άλλο εκτός από void την function σου, διαφορετικά θα επιστρέφει ότι βρει στο τέλος του stack του assembly call function, το οποίο είναι πρόβλημα, ειδικά όταν κάπου έχεις χρησιμοποιήσει την τιμή που επιστρέφει η function...
panakaigiotis Φεβρουάριος 4, 2011 #3 Φεβρουάριος 4, 2011 Αν έχεις κάποιο unix σύστημα δοκίμασε να τρέξεις τον κώδικά σου με την παρακάτω εντολή:gcc main.cpp file.h έτσι ώστε να τα κάνεις ταυτόχρονα compile.
Seek & Find Φεβρουάριος 4, 2011 Author #4 Φεβρουάριος 4, 2011 Ευχαριστω πολυ για τις πολυτιμες συμβουλες. ο compiler εφταιγε.. με visual studio και gcc ειναι μια χαρα.
MadCatMk21416003342 Φεβρουάριος 4, 2011 #5 Φεβρουάριος 4, 2011 Ευχαριστω πολυ για τις πολυτιμες συμβουλες. ο compiler εφταιγε.. με visual studio και gcc ειναι μια χαρα.what.Τρέχει σε visual studio και όχι σε κάτι οτιδήποτε άλλο; Με τί έκανες compile; Με ψησταριά;
Seek & Find Φεβρουάριος 5, 2011 Author #6 Φεβρουάριος 5, 2011 με visual studio και gcc ειναι μια χαραΧρησιμοποιουσα μια μονταρισμενη εκδοση του dev c++ που ειχε καποιο θεμα με τα includes. ολα καλα.
Recommended Posts
Archived
This topic is now archived and is closed to further replies.