Προς το περιεχόμενο

Βοήθεια σε c++ builder


m@trix

Προτεινόμενες αναρτήσεις

Δημοσ.

καλημέρα .

έχω μία εργασία που ζητάει να φτίαξουμε μία 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());

 

γιατι?

 

σωστο δεν είναι?

Δημοσ.

ευχαριστώ πολυ.

 

Αλλα γιατι μου βγάζει αδήλωτη την assert(fp.is_open()); . H assert δεν ορίζεται απο την #include<String> ???

Δημοσ.

[C++ Error] Unit1.h(60): E2015 Ambiguity between 'count' and '_STL::count<_InputIter,_Tp>(_InputIter,_InputIter,const _Tp &)'

 

ευχαριστώ

αλλα γιατί μου βγάζει πρόβλημα εδώ?

 

----> fp>>buf[count++];

 

ολα λάθος τα έκανα?

Δημοσ.

Τι compiler χρησιμοποιείς; Κάνεις using namespace std; πουθενά; Υπάρχει μια STL συνάρτηση με το όνομα count() και προφανώς μπλέκει τα μπούτια του και θεωρεί ότι η count σου είναι η std::count().

Δημοσ.

Στον προκείμενη περίπτωση όπως σωστά παρατηρεί ο dop, η ονομασία count χρησιμοποιείται από την STL υλοποίηση οπότε ή θα αλλάξεις την ονομασία της (πχ. mycount) ή θα αλλάξεις το fp>>buf[count++] σε fp>>buf[::count++] ώστε να υποδείξεις στον compiler πως εννοείς την δικιά σου μεταβλητή.

Δημοσ.

Δεν θα έπρεπε να έχει πρόβλημα αν δεν έχει βάλει using namespace std.

Αν έχει, ο compiler είναι πολύ χάλιας.

Δημοσ.

Κοίταξε είναι ένας 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

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...