απορία C++ ( για γερούς =?iso-8859-7?b?IOv99OXy?=)
Θοδωρής Λύτρας
thlytras at gmail.com
Sun Jan 15 08:14:26 EET 2012
Στις Κυρ 15 Ιαν 2012, ο/η Nikos Platis έγραψε:
> Στις 14 Ιανουαρίου 2012 10:02 μ.μ., ο χρήστης Θοδωρής Λύτρας
> <thlytras at gmail.com> έγραψε:
> > ...ή τουλάχιστον σ'εμένα τον ερασιτέχνη έτσι φαίνεται, καθώς δε μπορώ να
> > βρώ μια απάντηση στο πρόβλημα. Μπαίνω κατευθείαν στο ψητό:
> >
> > typedef std::vector<A::myEnum> Foo;
> >
> > class A
> > {
> > public:
> > enum myEnum {Red, Green, Blue, White, Black};
> > A();
> > void myFunction(Foo arg);
> > };
> >
> > Ο τύπος myEnum θέλω να είναι δηλωμένος μέσα στην κλάση A (όχι global, όχι
> > σε namespace), ενώ ο typedef Foo προτιμώ να είναι global (στη χειρότερη
> > μέσα στην κλάση A). Το πρόβλημα είναι οτι μέσα στην κλάση A έχω τη
> > συνάρτηση myFunction() που δέχεται ως όρισμα ένα αντικείμενο Foo.
> >
> > Έτσι αν ο typedef Foo οριστεί πριν από την κλάση A ο compiler
> > παραπονείται οτι δεν έχει οριστεί ο myEnum. Αν πάλι ο Foo οριστεί μετά
> > την A, ο compiler παραπονείται οτι δεν έχει οριστεί ο τύπος Foo του
> > ορίσματος της myFunction().
> >
> > Υπάρχει κάποιος τρόπος να λυθεί το πρόβλημα (με κάποιου είδους forward
> > declaration ίσως??)? Το μόνο που μπορώ να σκεφτώ είναι να μπει το typedef
> > μετά και να μη χρησιμοποιηθεί καθόλου μέσα στην κλάση (δηλαδή να γίνει
> > void myFunction(std::vector<A::myEnum> arg) ) αλλά αυτό είναι άσχημο.
> >
> > Ή μήπως εγώ είμαι τελείως κακομαθημένος???
> >
> > Any help appreciated,
> >
> > Θοδωρής
> >
> Αφού δεν σε πειράζει το Foo να δηλωθεί μέσα στην κλάση, μπορείς να
> μετακινήσεις το typedef ακριβώς κάτω από τη δήλωση του enum και θα
> δουλέψει.
Αυτό τελικά θα κάνω. Τώρα όμως βγαίνει κι άλλο ένα πρόβλημα. Στην δήλωση της
myfunction() θέλω να περάσω και ένα κενό std::vector σαν default όρισμα. Δε με
αφήνει όμως και μου λέει "missing template argument after '('".
Πως θα πρέπει να δηλώσω ένα κενό std::vector του τύπου myEnum??? Το Foo() δε
φαίνεται να δουλεύει, ούτε πολύ περισσότερο το std::vector().
Ευχαριστώ,
Θοδωρής
--
"Beauty is transitory"
"Beauty survives"
- Mr. Spock & Capt. Kirk, "That which survives", stardate unknown
by Theodore Lytras <thlytras at gmail.com>
More information about the Linux-greek-users
mailing list