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;}ευχαριστω Link to comment Share on other sites More sharing options...
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... Link to comment Share on other sites More sharing options...
panakaigiotis Φεβρουάριος 4, 2011 #3 Κοινοποίηση Φεβρουάριος 4, 2011 Αν έχεις κάποιο unix σύστημα δοκίμασε να τρέξεις τον κώδικά σου με την παρακάτω εντολή:gcc main.cpp file.h έτσι ώστε να τα κάνεις ταυτόχρονα compile. Link to comment Share on other sites More sharing options...
Seek & Find Φεβρουάριος 4, 2011 Author #4 Κοινοποίηση Φεβρουάριος 4, 2011 Ευχαριστω πολυ για τις πολυτιμες συμβουλες. ο compiler εφταιγε.. με visual studio και gcc ειναι μια χαρα. Link to comment Share on other sites More sharing options...
MadCatMk21416003342 Φεβρουάριος 4, 2011 #5 Κοινοποίηση Φεβρουάριος 4, 2011 Ευχαριστω πολυ για τις πολυτιμες συμβουλες. ο compiler εφταιγε.. με visual studio και gcc ειναι μια χαρα.what.Τρέχει σε visual studio και όχι σε κάτι οτιδήποτε άλλο; Με τί έκανες compile; Με ψησταριά; Link to comment Share on other sites More sharing options...
Seek & Find Φεβρουάριος 5, 2011 Author #6 Κοινοποίηση Φεβρουάριος 5, 2011 με visual studio και gcc ειναι μια χαραΧρησιμοποιουσα μια μονταρισμενη εκδοση του dev c++ που ειχε καποιο θεμα με τα includes. ολα καλα. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.