m@trix Δημοσ. 21 Οκτωβρίου 2006 Δημοσ. 21 Οκτωβρίου 2006 καλημέρα . έχω μία εργασία που ζητάει να φτίαξουμε μία global συνάρτηση την LoadDictionary η οποία θα διαβάζει απο ένα αρχείο λέξεις και μετα και θα τις αποθηκεύει σε ένα πίνακα. Μετά στο πρόγραμμα έχουμε φτιάξει ένα RichEdit όπου θα πληκτρολογούμε κείμενο και αυτο θα ελέγχει εάν οι λέξεις είναι σωστά γραμμένες. Το πρόβλημμα το αντιμετωπίζω στην global και είναι το παρακάτω. std::string buf[250000]; long count=0; void LoadDictionary (std::string fpath) { ifstream fp(fpath,c_str()); assert(fp.is_open()); while(!fp.eof()); { fp>>buf[count++]; }//while }//loaddictionary μου βγάζει σφάλμα στον compile εδω ifstream fp(fpath,c_str()); γιατι? σωστο δεν είναι?
Directx Δημοσ. 22 Οκτωβρίου 2006 Δημοσ. 22 Οκτωβρίου 2006 Με μια απλή ματία, άλλαξε το fpath,c_str(); σε fpath.c_str();
m@trix Δημοσ. 23 Οκτωβρίου 2006 Μέλος Δημοσ. 23 Οκτωβρίου 2006 ευχαριστώ πολυ. Αλλα γιατι μου βγάζει αδήλωτη την assert(fp.is_open()); . H assert δεν ορίζεται απο την #include<String> ???
dop Δημοσ. 23 Οκτωβρίου 2006 Δημοσ. 23 Οκτωβρίου 2006 Για να χρησιμοποιήσεις την assert() βάλε και το #include <cassert>
m@trix Δημοσ. 23 Οκτωβρίου 2006 Μέλος Δημοσ. 23 Οκτωβρίου 2006 [C++ Error] Unit1.h(60): E2015 Ambiguity between 'count' and '_STL::count<_InputIter,_Tp>(_InputIter,_InputIter,const _Tp &)' ευχαριστώ αλλα γιατί μου βγάζει πρόβλημα εδώ? ----> fp>>buf[count++]; ολα λάθος τα έκανα?
dop Δημοσ. 24 Οκτωβρίου 2006 Δημοσ. 24 Οκτωβρίου 2006 Τι compiler χρησιμοποιείς; Κάνεις using namespace std; πουθενά; Υπάρχει μια STL συνάρτηση με το όνομα count() και προφανώς μπλέκει τα μπούτια του και θεωρεί ότι η count σου είναι η std::count().
Directx Δημοσ. 24 Οκτωβρίου 2006 Δημοσ. 24 Οκτωβρίου 2006 Στον προκείμενη περίπτωση όπως σωστά παρατηρεί ο dop, η ονομασία count χρησιμοποιείται από την STL υλοποίηση οπότε ή θα αλλάξεις την ονομασία της (πχ. mycount) ή θα αλλάξεις το fp>>buf[count++] σε fp>>buf[::count++] ώστε να υποδείξεις στον compiler πως εννοείς την δικιά σου μεταβλητή.
dop Δημοσ. 24 Οκτωβρίου 2006 Δημοσ. 24 Οκτωβρίου 2006 Δεν θα έπρεπε να έχει πρόβλημα αν δεν έχει βάλει using namespace std. Αν έχει, ο compiler είναι πολύ χάλιας.
Directx Δημοσ. 24 Οκτωβρίου 2006 Δημοσ. 24 Οκτωβρίου 2006 Κοίταξε είναι ένας compiler του 2002 που πράγματι δεν φημίζεται για το conformity του με όλες τις νόρμες της C++ , η δύναμη του άλλωστε προέρχεται από το γεγονός ότι μπορείς να αναπτύξεις κώδικα C/C++ ή κώδικα που βασίζεται σε VCL framework (σε αυτή την περίπτωση το πρόβλημα του m@atrix περιορίζεται σε δυο ή τρεις γραμμές κώδικα) ή ανάμικτο (C/C++ & VCL) καθιστώντας τον θαυμάσιο εργαλείο για γρήγορο οπτικό προγραμματισμό (RAD). Παρʼ όλα αυτά ο φίλος μας, όπως έχω ήδη διαπιστώσει από περιέργεια, μπορεί άνετα να λύσει το ζητούμενο που τον απασχολεί με όλα τα όμορφα κόλπα της περίπλοκης C++ STL. Υ.Γ. Για καλύτερο C++ conformity μπορεί να δοκιμάσει κανείς την τελευταία έκδοση του C++ Builder που πια ονομάζεται Turbo C++ Express και είναι δωρεάν διαθέσιμη για download από το http://www.turboexplorer.com
m@trix Δημοσ. 24 Οκτωβρίου 2006 Μέλος Δημοσ. 24 Οκτωβρίου 2006 τελικα άλλαξα το count σε mycount και δουλεύει ευχαριστώ. Πάντως χρησιμοποιοω την c++ builder 6 v.2002.
caveneo Δημοσ. 25 Οκτωβρίου 2006 Δημοσ. 25 Οκτωβρίου 2006 Άρε πως μας βασανίζουν στη Βιομηχανική Πληροφορική!!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.